CET & Shadow Stack
Last updated
Last updated
Lernen Sie & üben Sie AWS-Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen Sie & üben Sie GCP-Hacking: HackTricks Training GCP Red Team Expert (GRTE)
CET ist eine Sicherheitsfunktion, die auf Hardwareebene implementiert ist und darauf abzielt, häufige Angriffe auf die Kontrollflussmanipulation wie Return-Oriented Programming (ROP) und Jump-Oriented Programming (JOP) zu vereiteln. Diese Arten von Angriffen manipulieren den Ausführungsfluss eines Programms, um bösartigen Code auszuführen oder harmlose Codefragmente so zu verketten, dass sie eine bösartige Aktion ausführen.
CET führt zwei Hauptfunktionen ein: Indirect Branch Tracking (IBT) und Shadow Stack.
IBT stellt sicher, dass indirekte Sprünge und Aufrufe zu gültigen Zielen erfolgen, die explizit als legale Ziele für indirekte Branches markiert sind. Dies wird durch die Verwendung eines neuen Befehlssatzes erreicht, der gültige Ziele markiert und somit verhindert, dass Angreifer den Kontrollfluss zu beliebigen Positionen 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 gegen den Shadow Stack validiert, wodurch verhindert wird, dass Angreifer Rückgabeadressen auf dem Stapel überschreiben, um den Kontrollfluss zu übernehmen.
Der Shadow Stack ist ein dedizierter Stapel, der ausschließlich zum Speichern von Rückgabeadressen verwendet wird. Er arbeitet neben dem regulären Stapel, ist jedoch geschützt und vor normalem Programmablauf verborgen, was es für Angreifer schwierig macht, damit zu manipulieren. Das Hauptziel des Shadow Stacks besteht darin sicherzustellen, dass Änderungen an Rückgabeadressen auf dem herkömmlichen Stapel erkannt werden, bevor sie verwendet werden können, um ROP-Angriffe effektiv zu verhindern.
ROP- und JOP-Angriffe beruhen auf der Fähigkeit, den Kontrollfluss einer Anwendung zu übernehmen, indem sie Schwachstellen ausnutzen, die es ihnen ermöglichen, Zeiger oder Rückgabeadressen auf dem Stapel zu überschreiben. Indem sie den Fluss zu Sequenzen von vorhandenen Code-Gadgets oder Return-Oriented Programming-Gadgets lenken, können Angreifer beliebigen Code ausführen.
Die Funktion IBT von CET erschwert diese Angriffe erheblich, indem sichergestellt wird, dass indirekte Branches nur zu Adressen springen können, die explizit als gültige Ziele markiert wurden. Dies macht es unmöglich, dass Angreifer beliebige Gadgets im Binärformat ausführen.
Der Shadow Stack hingegen stellt sicher, dass selbst wenn ein Angreifer eine Rückgabeadresse auf dem normalen Stapel überschreiben kann, die Diskrepanz erkannt wird, wenn die korrupte Adresse beim Zurückkehren aus einer Funktion mit der sicheren Kopie im Shadow Stack verglichen wird. Wenn die Adressen nicht übereinstimmen, kann das Programm beendet oder andere Sicherheitsmaßnahmen ergriffen werden, um zu verhindern, dass der Angriff erfolgreich ist.
Lernen Sie & üben Sie AWS-Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen Sie & üben Sie GCP-Hacking: HackTricks Training GCP Red Team Expert (GRTE)