Übersicht über die Speicher-Tagging-Erweiterung (Armv8.5-A)

Diese Veröffentlichung enthält eine Übersetzung des Whitepapers für die neue Armv8.5-A: Memory Tagging Extension (MTE) von ARM. MTE versucht, die Sicherheit von Code zu erhöhen, der in unsicheren Sprachen geschrieben ist, ohne dass Änderungen am Quellcode erforderlich sind, und in einigen Fällen, ohne dass eine Neukompilierung erforderlich ist. Durch die einfache Bereitstellung von Mechanismen zur Erkennung und Verhinderung der Folgen von Verstößen gegen die Speichersicherheit kann die Ausnutzung einer großen Klasse von Sicherheitslücken verhindert werden.



Einführung


1988 verkrüppelte der Internet-Wurm ein Zehntel des Netzwerks, das noch in den Kinderschuhen steckte, und der verbleibende Teil verlangsamte sich erheblich ( The Morris Worm ). Mehr als dreißig Jahre später bleiben zwei Klassen von Speicherschwachstellen für Code relevant und wichtig, der in einer C-ähnlichen Programmiersprache geschrieben ist. Laut der BlueHat-Präsentation von 2019 werden 70% aller in Microsoft-Produkten gelösten Sicherheitsprobleme durch Sicherheitslücken im Speicher verursacht. Ähnliche Daten wurden von Google für Android erhalten : Mehr als 75% der Sicherheitslücken sind Verstöße gegen die Speichersicherheit. Obwohl viele dieser Verstöße in moderneren sicheren Sprachen nicht möglich gewesen wären, ist die in C und C ++ geschriebene Codebasis sehr umfangreich. Debian Linux alleinenthält über eine halbe Milliarde Zeilen .


Verstöße gegen die Speichersicherheit lassen sich in zwei Hauptkategorien einteilen: räumliche Sicherheit und vorübergehende Sicherheit. Die Ausnutzung von Verstößen des ersten Typs ist normalerweise bestimmt für:


  • böswillige Nutzlastzustellung;
  • Kontrolle über das System erlangen (in einer Kette mit anderen Arten von Schwachstellen);
  • Organisation des Verlusts privilegierter Informationen.

Eine Verletzung der räumlichen Sicherheit liegt vor, wenn eine Berufung auf ein Objekt seine wahren Grenzen überschreitet. Beispiel: Pufferüberlauf auf dem Stapel, der möglicherweise das Umschreiben der Rücksprungadresse aus der Funktion ermöglicht, was wiederum die Grundlage für verschiedene Arten von Angriffen bilden kann.


́ , , , , . , , , .


MTE . MTE , . . MTE , . ( ) .



MTE , , . .


MTE , . (legacy) MTE .


MTE . MTE , . MTE MTE , Branch Target Identification (BTI) Pointer Authentication Code (PAC), , , .


MTE


Memory Tagging Extension "-" (lock & key). (lock) . ( ), . ( ) .


16 . (Tag Granule). (lock).


(, , ) , .


, ́ , MTE Top Byte Ignore (TBI) Armv8-A. TBI , . . MTE .


"-" :


MTE , . ( 4), , . , , , , , , .


MTE - . , , 100%.



, Memory Tagging Extension Armv8-A. , :


  • Architectural Details
  • Deploying MTE at Scale
  • Deploying MTE in Hardware
  • Deploying MTE in Software
  • Optimizing for MTE

, Google MTE Android (Arm). /, .


a13xp0p0vund seine ausgezeichnete Veröffentlichung CVE-2019-18683: Ausnutzung einer Sicherheitsanfälligkeit im Linux V4L2-Subsystem , die das Interesse an der MTE- Engine weckte .


All Articles