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

Wie Tags verglichen werden

Bei der Speicherzuteilung setzt der Allokator für jeden 16-Byte-Block des Bereichs das speicherseitige Tag und gibt einen Zeiger zurück, der denselben Wert in seinen oberen Bits trägt (dem Teil, der nicht zur Adressübersetzung dient). Bei jedem Load und Store vergleicht die CPU das Tag des Zeigers mit dem Tag des angesprochenen Speichers und behandelt eine Abweichung als Fehler. Werden die Tags beim Freigeben eines Bereichs geändert, lässt sich ein Zugriff über einen alten Zeiger auf den freigegebenen Bereich erkennen. Die speicherseitigen Tags werden getrennt von den Daten gespeichert.

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.

Prüfmodi

Der synchrone Modus löst bei einer Abweichung sofort eine Ausnahme aus und zeigt, welcher Befehl den Fehler verursacht hat; er eignet sich für die Entwicklung und kritischen Code, kostet aber etwas mehr. Der asynchrone Modus zeichnet den Fehler auf und meldet ihn später gesammelt; er kostet weniger und eignet sich, um Fehler im Feld auf vielen Geräten zu sammeln. Je nach Zweck wird MTE sowohl zur Prüfung während der Entwicklung als auch zur Abwehr von Angriffen auf ausgelieferten Geräten eingesetzt.

Jetzt üben: Fragen zu MTE (Memory Tagging Extension)

Bei Arms MTE (Memory Tagging Extension) erhält jeder 16-Byte-Block des Speichers 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. Betrachtet wird der Fehler, über einen alten Zeiger auf einen bereits freigegebenen Bereich zuzugreifen. Wird das neue Tag bei der erneuten Zuteilung des Bereichs gleichverteilt zufällig aus den 16 Möglichkeiten gewählt, wie groß ist dann die Wahrscheinlichkeit, dass die Tags zufällig übereinstimmen und der Fehler unentdeckt bleibt?

  1. A1/16 (etwa 6,3 %)
  2. B1/4 (25 %)
  3. C15/16 (etwa 93,8 %)
Antwort und Erläuterung anzeigen

Antwort: A. 1/16 (etwa 6,3 %)

Ein Tag hat 4 Bit und kann daher 2⁴ = 16 Werte annehmen. Wird das neue Tag gleichverteilt aus den 16 Werten gewählt, stimmt es mit der Wahrscheinlichkeit 1/16 = 6,25 % (etwa 6,3 %) zufällig mit dem Tag des alten Zeigers überein, und in den übrigen 15/16 der Fälle wird die Abweichung erkannt. Schon ein einzelner Zugriff wird mit etwa 94 % Wahrscheinlichkeit entdeckt, sodass sich Fehler im laufenden Betrieb auf vielen Geräten finden und Angriffe erschweren lassen. Erhalten benachbarte Bereiche bei der Zuteilung stets unterschiedliche Tags, werden Überläufe in den Nachbarbereich sicher erkannt.

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.

Fragen mit „MTE (Memory Tagging Extension)“ (1)

  1. Bei Arms MTE (Memory Tagging Extension) erhält jeder 16-Byte-Block des Speichers 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. Betrachtet wird der Fehler, über einen alten Zeiger auf einen bereits freigegebenen Bereich zuzugreifen. Wird das neue Tag bei der erneuten Zuteilung des Bereichs gleichverteilt zufällig aus den 16 Möglichkeiten gewählt, wie groß ist dann die Wahrscheinlichkeit, dass die Tags zufällig übereinstimmen und der Fehler unentdeckt bleibt?

Verwandte Begriffe

Zeiger (Pointer) Arm CCA (Confidential Compute Architecture) CHERI Confidential Computing DICE (Device Identifier Composition Engine) FIPS 140-3 HBOM (Hardware-Stückliste) Kontrollflussintegrität (Control-Flow Integrity) Laser-Fault-Injection Logic Locking

Zur Glossarübersicht