Memory Tagging Extension (MTE) gilt als eine der fortschrittlichsten Technologien zur Verbesserung der Speicherintegrität und zur Abwehr von Speicherfehlern wie Use-after-free oder Buffer Overflow. Die Einführung von MTE auf Arm-Prozessoren hat die Sicherheit von Systemen mit modernen Betriebssystemen deutlich erhöht. Dennoch beweist die jüngste Sicherheitslücke CVE-2025-0072, dass auch High-End-Sicherheitsmechanismen mit entsprechendem Know-how umgangen werden können – insbesondere im Kontext komplexer Hardwarekomponenten wie der Arm Mali GPU und deren Treibern. Die Schwachstelle wirkt sich auf Geräte aus, die neuere Mali GPUs mit Command Stream Frontend (CSF) Architektur nutzen. Dazu zählen unter anderem Googles Pixel 7, 8 und 9 Serien, welche mit Kernel-MTE Unterstützung laufen.
Die Details dieser Schwachstelle offenbaren eine neue Angriffsmethode, die nicht nur die Annahme von MTE als todsichere Schutzmaßnahme infrage stellt, sondern auch das Verständnis für Speicherverwaltung und Treiberkommunikation in GPUs erweitert. Arm Mali GPUs mit CSF bieten eine Schnittstelle, über die Userland-Anwendungen mit der GPU interagieren. Dabei spielen kbase_queue Objekte eine zentrale Rolle, denn sie werden als Kommando-Warteschlangen genutzt, über die Befehle an den GPU-Treiber übergeben werden. Diese Warteschlangen werden über spezielle IOCTL-Calls erstellt und verwaltet, darunter KBASE_IOCTL_CS_QUEUE_REGISTER, KBASE_IOCTL_CS_QUEUE_GROUP_CREATE und KBASE_IOCTL_CS_QUEUE_BIND. Bindet man eine kbase_queue an eine kbase_queue_group, so wird dafür ein mmap-Handle erzeugt.
Hier geschieht der Kern des Problems: Über die Funktion kbase_csf_alloc_command_stream_user_pages wird GPU-Speicher vom Treiber reserviert, im Speicher des Nutzers mapped und dessen physische Adressen in der Variable queue->phys gespeichert. Das System sorgt dafür, dass diese Seiten freigegeben werden, sobald der User-Space-Bereich, der diese Seiten mapped, wieder entbunden wird. Eine kritische Schwäche entsteht, wenn es möglich ist, queue->phys nach der Zuordnung in User-Space zu überschreiben und dabei eine Use-after-free-Situation zu provozieren. Obwohl die Treiberlogik Einzelbindung von kbase_queue zu verhindern versucht, indem das queue->group Feld geprüft wird, erlaubt eine weitere Funktion, nämlich die Terminierung einer Queue-Gruppe (kbase_queue_group), das Aufheben der Bindung. Dies ermöglicht, denselben kbase_queue erneut an eine andere Queue-Gruppe zu binden und damit queue->phys mit neuen Seiten zu überschreiben, während alte Mapping-Regionen noch bestehen.
Dieses Verhalten schafft eine Verwundbarkeit im Sinne eines Use-after-free bei Seiten auf Betriebssystemebene, die dann ausgenutzt werden kann. Aufgrund dieser Manipulation lässt sich provozieren, dass ein Mapping von User-Space auf den nachträglich freigegebenen Speicherbereich verweist, welcher technisch zwar als ungenutzt gilt, aber weiterhin zugänglich ist und vom Angreifer kontrolliert wird. Der Grund, warum diese Art von Angriff MTE trotz all seiner Hardware-gestützten Prüfmechanismen umgehen kann, liegt im Zusammenspiel der Speicherverwaltung des Mali-Treibers und der Art des Mappings. Die frei gewordenen Seiten werden nicht über den standardmäßigen Buddy-Allocator komplett zurückgegeben, sondern verbleiben oftmals in Treiberspeicherpools. Selbst wenn Pages komplett über den Buddy-Allocator freigegeben werden, wird das Mapping durch den Treiber mittels der Funktion mgm_vmf_insert_pfn_prot direkt in den User-Space Seitentabellen untergebracht, ohne dass das Kernel-Subsystem hier die für MTE kritische Kontrolle übernimmt.
Somit findet die Zugriffsprüfung der Tags in der Hardware de facto nicht statt. Das Ergebnis ist ein unerwarteter und subtiler Umgehungsweg der MTE-Absicherung. Um die kritischen Speicherstrukturen der GPU zu erreichen, benutzt die Exploit-Technik einen weiteren Trick. Die frei gegebenen und wieder verwendeten Speicherseiten werden für die Page Global Directories (PGD) von GPU-Kontexten verwendet. Da diese PGDs von der GPU genutzt werden, erlauben manipulierte Inhalte beliebige Speicheroperationen, inklusive dem Umschreiben von Kernel-Code oder sensiblen Datenstrukturen.
Dies führt letztendlich dazu, dass ein Schadprogramm aus dem User-Space heraus beliebigen Kernel-Code ausführen kann, root-Rechte erlangt oder sogar Sicherheitsmechanismen wie SELinux deaktiviert. Neben dieser Exploit-Technik ist bemerkenswert, dass die von Arm implementierte Speicher-Pool-Architektur in Mali-GPUs eine zentrale Rolle spielt. Diese Pools verwalten die Speicherseiten hierarchisch, indem sie zunächst aus einem Pool reservieren, dann über einen nächsten Pool ausweichen und schließlich auf das System zurückgreifen, wenn keine Seiten verfügbar sind. Die Schwachstelle nutzt genau diesen Reservierungs- und Freigabe-Mechanismus zur Manipulation. Trotz der wachsenden Popularität und Verbreitung von MTE auf mobilen und eingebetteten Geräten stellt CVE-2025-0072 unter Beweis, dass Sicherheitsmechanismen allein nicht ausreichen, wenn zugrundeliegende Treiber oder Hardware-Komponenten komplexe Speicherverwaltungs-Operationen mit unzureichender Kontrolle ausführen.
Der Exploit zeigt konkret, dass es möglich ist, die vom Kernel vorgesehene MTE-Überprüfung zu umgehen, wenn der Zugriff durch direkte User-Space-Mappings mit unkontrolliertem Seiteninhalt erfolgt. Dies erzeugt eine neue Angriffsfläche, die nicht nur für Android-Geräte mit Arm Mali GPUs relevant ist, sondern als mahnendes Beispiel für andere Plattformen und Architekturen dient, die auf ähnliche Speicherverwaltungsmechanismen und Sicherheitsfeatures vertrauen. Der Patch, den Arm im Mai 2025 mit Mali Treiber Version r54p0 veröffentlicht hat, behebt die identifizierten Schwachstellen und wurde zeitgleich in den Android-Sicherheitsupdates eingepflegt. Dennoch bleibt der Erkenntniswert der Sicherheitsforschung über CVE-2025-0072 unverändert hoch. Entwickler und Sicherheitsforscher sind angehalten, Treibercode mit besonderem Augenmerk auf komplexe Speicherverwaltungsalgorithmen zu prüfen.