Was ist Pointer Authentication (PAC)?

Mit Armv8.3-A eingeführter Mechanismus. Aus dem Zeigerwert und einem Kontextwert wird mit einem in der CPU gehaltenen Schlüssel ein kurzer Authentifizierungscode (PAC) berechnet, in die ungenutzten oberen Bits des Zeigers geschrieben und unmittelbar vor der Verwendung des Zeigers mit einem speziellen Befehl geprüft. Bei Abweichung wird der Zeiger in eine unbrauchbare Adresse umgewandelt, was Angriffe erschwert, die Rücksprungadressen oder Funktionszeiger überschreiben. Die Länge des Codes hängt von Einstellungen wie der Breite der virtuellen Adresse ab.

Japanische Bezeichnung: ポインタ認証(PAC)

„Pointer Authentication (PAC)“ kommt in 2 Übungsfragen aus 1 Themen vor, z. B. Aktuelle Entwicklungen der Hardwaresicherheit.

Fachgebiet: Aktuelle Entwicklungen der Hardwaresicherheit

Jetzt üben: Fragen zu Pointer Authentication (PAC)

Welche Beschreibung des Mechanismus der Pointer Authentication (PAC) von Arm ist richtig?

  1. ABei jeder Verwendung eines Zeigers wird das Betriebssystem per Systemaufruf gefragt, ob der Zeiger einen korrekten Wert hat
  2. 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
  3. 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.

„Pointer Authentication (PAC)“ in den Erläuterungen

Fragen mit „Pointer Authentication (PAC)“ (2)

  1. Welche Beschreibung des Mechanismus der Pointer Authentication (PAC) von Arm ist richtig?
  2. Welche Zuordnung ist bei Hardwarefunktionen, die die Kontrollflussintegrität unterstützen, richtig: was Rücksprünge aus Funktionen schützt und was indirekte Aufrufe und Sprünge, etwa über Funktionszeiger, schützt?

Verwandte Begriffe

Rücksprungadresse Zeiger (Pointer) Stackpointer Kontrollflussintegrität (Control-Flow Integrity) Funktionszeiger Shadow Stack KPTI (Kernel Page-Table Isolation) Meltdown IOMMU DMA (Direct Memory Access)

Zur Glossarübersicht