Control-Flow Integrity
Was ist Control-Flow Integrity?
Control-Flow IntegrityControl-Flow Integrity (CFI) beschraenkt indirekte Aufrufe und Returns auf einen vorab berechneten Satz legitimer Ziele und blockiert ROP- bzw. JOP-Angriffe.
CFI wurde 2005 von Abadi, Budiu, Erlingsson und Ligatti formalisiert. Der Compiler erzeugt den Kontrollflussgraphen, weist jeder indirekten Aufrufstelle eine Menge erlaubter Ziele zu und instrumentiert Call- und Return-Stellen mit Laufzeitpruefungen. Praktische Umsetzungen sind LLVM CFI (typbasierte Bucket-IDs fuer Forward-Edges), Microsoft Control Flow Guard, Linux-Kernel CFI (kCFI) sowie hardware-gestuetzte Varianten wie Intel CET-IBT und Arm BTI fuer indirekte Spruenge plus Shadow Stack fuer Returns. CFI vereitelt klassisches ROP/JOP, weil Gadget-Ketten die erlaubten Kanten verletzen. Hauptbeschraenkungen bleiben grosse Aequivalenzklassen in C/C++ und inkompatible Schnittstellen.
● Beispiele
- 01
Microsoft Control Flow Guard blockt indirekte Aufrufe ueber manipulierte vtable in Edge.
- 02
Der Linux-6.x-Kernel mit kCFI stoppt eine ROP-Kette in einer Treiberluecke.
● Häufige Fragen
Was ist Control-Flow Integrity?
Control-Flow Integrity (CFI) beschraenkt indirekte Aufrufe und Returns auf einen vorab berechneten Satz legitimer Ziele und blockiert ROP- bzw. JOP-Angriffe. Es gehört zur Kategorie Anwendungssicherheit der Cybersicherheit.
Was bedeutet Control-Flow Integrity?
Control-Flow Integrity (CFI) beschraenkt indirekte Aufrufe und Returns auf einen vorab berechneten Satz legitimer Ziele und blockiert ROP- bzw. JOP-Angriffe.
Wie schützt man sich gegen Control-Flow Integrity?
Schutzmaßnahmen gegen Control-Flow Integrity kombinieren typischerweise technische Kontrollen und operative Praktiken, wie in der Definition oben beschrieben.
Welche anderen Bezeichnungen gibt es für Control-Flow Integrity?
Übliche alternative Bezeichnungen: CFI, Control Flow Guard, kCFI.