Was ist MTE (Memory Tagging Extension)?
Memory Tagging Extension von Arm, eingeführt mit Armv8.5-A. Jeder 16-Byte-Block des Speichers erhält ein 4-Bit-Tag, auch in die oberen Bits des Zeigers wird ein 4-Bit-Tag geschrieben, und die CPU prüft bei jedem Zugriff, ob beide übereinstimmen. Die Verwendung von Speicher nach der Freigabe und Zugriffe außerhalb der Grenzen lassen sich mit geringem Aufwand probabilistisch finden.
Japanische Bezeichnung: MTE(メモリタギング拡張)
„MTE (Memory Tagging Extension)“ kommt in 1 Übungsfragen aus 1 Themen vor, z. B. Aktuelle Entwicklungen der Hardwaresicherheit.
Fachgebiet: Aktuelle Entwicklungen der Hardwaresicherheit
Probabilistische Erkennung
Da ein Tag 4 Bit hat, gibt es nur 16 Werte, und ein zufällig gewähltes Tag stimmt mit der Wahrscheinlichkeit 1/16 zufällig überein. Ein einzelner fehlerhafter Zugriff wird also mit etwa 6 % Wahrscheinlichkeit übersehen und in etwa 94 % der Fälle erkannt. Zuteilungsstrategien, die benachbarten Bereichen stets unterschiedliche Tags geben, machen Überläufe in einen Nachbarbereich sicher erkennbar. Das Speichern der Tags erfordert zusätzlichen Speicher von etwa 4/128 = 3,125 % der Kapazität.
Häufige Fragen
Wo wird MTE eingesetzt?
Mit Stand Mitte der 2020er-Jahre unterstützen es unter anderem einige Smartphone-SoCs, und Betriebssysteme und Speicherallokatoren aktivieren es für Prüfungen in der Entwicklung und um Angriffe zu erschweren. Nötig sind sowohl unterstützende Hardware als auch unterstützende Software.
Verhindert MTE Angriffe, die Speicherfehler ausnutzen?
Es findet viele Fehler und erschwert Angriffe, doch Tags können zufällig übereinstimmen, und die Wirkung sinkt, wenn Tag-Werte erraten oder ausgespäht werden. Da die Erkennung probabilistisch ist, wird MTE dort, wo deterministische Garantien nötig sind, mit Mechanismen wie CHERI oder speichersicheren Sprachen kombiniert.