CET & Shadow Stack
Last updated
Last updated
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
CET ist eine Sicherheitsfunktion, die auf Hardwareebene implementiert ist und darauf abzielt, gängige Angriffe auf den Kontrollfluss wie Return-Oriented Programming (ROP) und Jump-Oriented Programming (JOP) zu vereiteln. Diese Arten von Angriffen manipulieren den Ausführungsfluss eines Programms, um schädlichen Code auszuführen oder harmlose Codefragmente so zu verketten, dass eine schädliche Aktion ausgeführt wird.
CET führt zwei Hauptmerkmale ein: Indirect Branch Tracking (IBT) und Shadow Stack.
IBT stellt sicher, dass indirekte Sprünge und Aufrufe zu gültigen Zielen erfolgen, die ausdrücklich als legale Ziele für indirekte Zweige markiert sind. Dies wird durch die Verwendung eines neuen Befehlssatzes erreicht, der gültige Ziele markiert und somit verhindert, dass Angreifer den Kontrollfluss an beliebige Orte umleiten.
Shadow Stack ist ein Mechanismus, der die Integrität von Rückgabeadressen gewährleistet. Er hält eine gesicherte, versteckte Kopie von Rückgabeadressen getrennt vom regulären Aufrufstapel. Wenn eine Funktion zurückkehrt, wird die Rückgabeadresse mit dem Shadow Stack validiert, um zu verhindern, dass Angreifer Rückgabeadressen im Stapel überschreiben und den Kontrollfluss übernehmen.
Der Shadow Stack ist ein dedizierter Stapel, der ausschließlich zur Speicherung von Rückgabeadressen verwendet wird. Er arbeitet neben dem regulären Stapel, ist jedoch geschützt und vor der normalen Programmausführung verborgen, was es Angreifern erschwert, ihn zu manipulieren. Das Hauptziel des Shadow Stacks ist es, sicherzustellen, dass alle Änderungen an Rückgabeadressen im herkömmlichen Stapel erkannt werden, bevor sie verwendet werden können, wodurch ROP-Angriffe effektiv gemildert werden.
ROP- und JOP-Angriffe basieren auf der Fähigkeit, den Kontrollfluss einer Anwendung zu übernehmen, indem sie Schwachstellen ausnutzen, die es ihnen ermöglichen, Zeiger oder Rückgabeadressen im Stapel zu überschreiben. Indem sie den Fluss zu Sequenzen vorhandener Code-Gadgets oder Rückgabegestützter Programmiergadgets lenken, können Angreifer beliebigen Code ausführen.
CETs IBT-Funktion macht diese Angriffe erheblich schwieriger, indem sichergestellt wird, dass indirekte Zweige nur zu Adressen springen können, die ausdrücklich als gültige Ziele markiert sind. Dies macht es unmöglich für Angreifer, beliebige Gadgets, die über die Binärdatei verteilt sind, auszuführen.
Der Shadow Stack hingegen stellt sicher, dass selbst wenn ein Angreifer eine Rückgabeadresse im normalen Stapel überschreiben kann, die Abweichung erkannt wird, wenn die beschädigte Adresse mit der sicheren Kopie im Shadow Stack beim Zurückkehren aus einer Funktion verglichen wird. Wenn die Adressen nicht übereinstimmen, kann das Programm beendet werden oder andere Sicherheitsmaßnahmen ergreifen, um zu verhindern, dass der Angriff erfolgreich ist.
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)