KontrolleFlussIntegrität
KontrolleFlussIntegrität, oft abgekürzt als CFI, bezeichnet eine Gruppe von Sicherheitsmechanismen, die sicherstellen, dass der Ablauf eines Programms nur zu zulässigen Zieladressen führt, wie sie in einem vorher bestimmten Kontrollflussgraphen definiert sind. Ziel ist es, Code-Reuse-Angriffe wie Return-Oriented Programming (ROP) und Jump-Oriented Programming (JOP) zu erschweren, indem der Programmfluss gegen unerlaubte Sprünge abgeschottet wird.
Funktionsweise: Bei der Kompilierung wird ein Kontrollflussgraph erstellt und Codeinstrumentierung eingefügt. Jede indirekte Sprunganweisung und jede
Umsetzung: Es existieren verschiedene Ansätze, darunter compilerbasierte CFI-Lösungen (beispielsweise LLVM-CFI, GCC-CFI) sowie betriebssystem- oder hardwaregestützte Ansätze
Herausforderungen: Der Leistungsaufwand durch Instrumentierung kann spürbar sein, und die Genauigkeit des Graphen ist entscheidend, um
Anwendung: CFI wird in modernen Betriebssystemen, Webbrowsern und sicherheitsorientierten Anwendungen eingesetzt und gilt als wichtiger Bestandteil