Aktuelle Entwicklungen der Hardwaresicherheit
Welche Beschreibung des Mechanismus der Pointer Authentication (PAC) von Arm ist richtig?
- ABei jeder Verwendung eines Zeigers wird das Betriebssystem per Systemaufruf gefragt, ob der Zeiger einen korrekten Wert hat
- BAus dem Zeigerwert und einem Kontextwert wird mit einem Schlüssel in der CPU ein kurzer Authentifizierungscode berechnet, in die oberen Bits des Zeigers geschrieben und vor der Verwendung geprüft
- CAlle Bits des Zeigers werden mit einem Schlüssel in der CPU verschlüsselt im Speicher abgelegt und vor jeder Verwendung in der CPU entschlüsselt
Antwort und Erläuterung anzeigen
Antwort: B. Aus dem Zeigerwert und einem Kontextwert wird mit einem Schlüssel in der CPU ein kurzer Authentifizierungscode berechnet, in die oberen Bits des Zeigers geschrieben und vor der Verwendung geprüft
In die oberen Bits eines 64-Bit-Zeigers, die nicht für die virtuelle Adresse genutzt werden, wird ein Authentifizierungscode geschrieben, den die CPU mit einem internen Schlüssel aus dem Zeigerwert und einem Kontextwert (zum Beispiel dem Stackpointer) berechnet. Unmittelbar bevor etwa die Rücksprungadresse einer Funktion verwendet wird, berechnet ein spezieller Befehl den Code neu und vergleicht ihn; bei Abweichung wird der Zeiger in eine unbrauchbare Adresse umgewandelt, was Angriffe erschwert, die Rücksprungadressen auf dem Stack überschreiben (etwa ROP). Software kann den Schlüssel nicht lesen, sodass ein Angreifer keinen passenden Authentifizierungscode für einen veränderten Zeiger erzeugen kann. Die Länge des Codes hängt jedoch von Einstellungen wie der Breite der virtuellen Adresse ab und beträgt oft nur ein gutes Dutzend Bit oder weniger; wo viele Rateversuche möglich sind, muss daher die Wahrscheinlichkeit einer zufälligen Übereinstimmung bedacht werden.
Weiter: 9 weitere Fragen zu Aktuelle Entwicklungen der Hardwaresicherheit