ARM64: Memory-Tagging gegen Speicherlücken in Linux eingepflegt
Kommende ARM-CPUs bieten Befehle, die Speicherlücken erkennen sollen. Google will dies in Android nutzen, die Grundlage dafür ist gelegt.

Die kommende Version 5.10 des Linux-Kernels, die sich derzeit in Entwicklung befindet, wird die Befehlssatzerweiterung Memory Tagging Extension (MTE) von ARMv8.5 unterstützen. Ziel der MTE ist es, das Ausnutzen der vielen verschiedenen und vor allem häufigen Speicherfehler in C- und C++-Code deutlich zu erschweren oder gar ganz zu verhindern, indem derartige Fehler eben mithilfe der CPU erkannt werden.
Den Code dafür hat der Linux-Chefentwickler Linus Torvalds in den Hauptentwicklungszweig eingepflegt. Der zuständige Betreuer Will Deacon beschreibt die Funktion als "aufregend". Er hoffe, dass es damit möglich werde, die Erkennung von Use-After-Free-Lücken (UAF) im laufenden Betrieb für Userspace-Anwendungen zu nutzen, sofern die CPU die Befehlssatzerweiterung unterstützt. Die Funktion soll demnach außerdem möglichst schon mit der folgenden Linux-Kernel-Version 5.11 mit KASan (Kernel Address Sanitizer) und damit für den Kernel selbst genutzt werden können.
Die Idee des Memory Tagging ist, bestimmte Speicherbereiche mit einem Tag zu markieren, dazugehörige Zeiger erhalten den gleichen Tag. Soll über einen Zeiger auf den Speicher zugegriffen werden, überprüft die CPU die beiden Tags. Stimmen diese nicht überein, liefert die CPU eine Exception. Mithilfe der Befehlssatzerweiterung lassen sich die Tags direkt manipulieren.
Android wohl erstes Projekt mit MTE
Details zur konkreten Implementierung in Linux liefert das Magazin LWN.net in einer ausführliche Analyse. Demnach können Überläufe einfach dadurch erkannt werden, dass benachbarte Speicherbereiche unterschiedliche Tags verwenden. UAF-Lücken lassen sich erkennen, indem unmittelbar nach der Speicherfreigabe der Tag für den Speicherbereich geändert wird. Derzeit ist Nutzung dieser Möglichkeiten nicht standardmäßig im Linux-Kernel aktiviert. Vielmehr müssen Anwendungen die Nutzung explizit für bestimmte Speicherbereiche aktivieren.
Als eines der ersten großen Open-Source-Projekte wird wohl künftig Android auf die Nutzung der MTE setzen. Das zumindest hat das Sicherheitsteam von Google bereits im vergangenen Jahr angekündigt. Die MTE sollen demnach unter anderem beim Fuzzing eingesetzt werden. Google setzt aber auch darauf, dass App-Entwicklungsteams und Smartphone-Hersteller die Technik im Produktiveinsatz verwenden. Bis es so weit ist, muss es aber auch erst noch Hardware geben, die die MTE unterstützt, denn diese CPUs sind zurzeit noch nicht verfügbar.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
Bis es so weit ist, muss es aber auch erst noch Hardware geben, die die MTE...