Aktuelle Entwicklungen der Hardwaresicherheit
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?
- ARücksprünge werden durch Shadow Stacks oder Pointer Authentication geschützt, indirekte Aufrufe und Sprünge durch Mechanismen, die am Anfang des Sprungziels einen festgelegten Markierungsbefehl verlangen
- BRücksprünge werden durch Mechanismen geschützt, die am Anfang des Sprungziels einen festgelegten Markierungsbefehl verlangen, indirekte Aufrufe und Sprünge durch Shadow Stacks
- CRücksprünge werden durch KPTI (Kernel Page-Table Isolation) geschützt, indirekte Aufrufe und Sprünge durch Adressübersetzung in der IOMMU
Antwort und Erläuterung anzeigen
Antwort: A. Rücksprünge werden durch Shadow Stacks oder Pointer Authentication geschützt, indirekte Aufrufe und Sprünge durch Mechanismen, die am Anfang des Sprungziels einen festgelegten Markierungsbefehl verlangen
Ein Shadow Stack vergleicht die Rücksprungadresse mit ihrer Kopie, und Pointer Authentication prüft den an die Rücksprungadresse angehängten Authentifizierungscode; beide schützen also Rücksprünge aus Funktionen. Für indirekte Aufrufe und Sprünge verlangen Intel IBT und Arm Branch Target Identification am Anfang des Sprungziels einen Markierungsbefehl (bei x86 ENDBR64) und machen Sprünge etwa in die Mitte von Funktionen zu Ausnahmen. Da jedoch jede markierte Stelle von jedem indirekten Sprung erreichbar bleibt, werden diese Funktionen teils mit feineren Prüfungen des Compilers kombiniert, die die Ziele auf Funktionen passenden Typs beschränken. KPTI ist eine Gegenmaßnahme gegen Meltdown, und die IOMMU beschränkt DMA von Geräten; keines von beiden schützt den Kontrollfluss.
Weiter: 9 weitere Fragen zu Aktuelle Entwicklungen der Hardwaresicherheit