Original-URL des Artikels: https://www.golem.de/news/arm64-memory-tagging-gegen-speicherluecken-in-linux-eingepflegt-2010-151560.html    Veröffentlicht: 16.10.2020 13:47    Kurz-URL: https://glm.io/151560

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.

 (sg)


Verwandte Artikel:
Compiler: LLVM 9 baut x86-Linux-Kernel   
(20.09.2019, https://glm.io/143986 )
Unix: NetBSD 9.0 unterstützt ARMv8 und ARM-Server   
(17.02.2020, https://glm.io/146675 )
ARM: Memory-Tagging soll Speicherlücken in Android verhindern   
(06.08.2019, https://glm.io/143016 )
Kernel: Linux 5.9 schließt Lizenzlücke   
(12.10.2020, https://glm.io/151463 )
CalyxOS im Test: Ein komfortables Android mit einer Extraportion Privacy   
(19.10.2020, https://glm.io/151555 )

© 1997–2021 Golem.de, https://www.golem.de/