Abstürze mit Folgen: Serieller Code-Reuse-Angriff Bricht Intel CET in Linux
Laut Marcos Bajo, dem Erstautor der Studie zu SFOP, ist der neue Code-Reuse-Angriff vergleichsweise leicht auszunutzen, da er keine spezifischen Eigenschaften im Zielprogramm erfordert und bei allen Programmen funktioniert, die auf einem Linux-System laufen. SFOP ermöglicht die Ausführung beliebigen Codes, indem er Intel CET, einen modernen CFI-Mechanismus, aushebelt. Bajo erklärt: „Heutzutage werden Computer durch CFI-Abwehrmechanismen vor Code-Reuse-Angriffen geschützt, die den korrekten Programmablauf gewährleisten sollen. Bei diesem Angriff haben wir versucht, die gleichen Fähigkeiten zu erreichen, die vor der Einführung von CFI-Mechanismen möglich waren. Intel CET ist das wichtigste dieser Systeme, und auf das zielen wir ab bei SFOP. Wir bezeichnen es als das Wichtigste, weil es standardmäßig in Windows und Linux vorhanden ist – seit 2020 ist es in Intel-Prozessoren integriert. Jedes Programm, das auf Ihrem Computer läuft, wird durch diesen Mechanismus geschützt.“
Was? SFOP umgeht Intel CET, indem er Segmentierungsfehler in Serie hervorruft. Durchführbar in jedem Programm, das auf einem Linux-System läuft.
Wie? Nutzt Schwachstellen in der Signalbehandlung und Intel CET in Linux-Systemen aus. Schleust Signal-Handler ein, um serielle Abstürze herbeizuführen und die Ausführung beliebigen Codes zu erzielen.
Was jetzt? Patches, die SFOP erfolgreich entschärfen, sind bereits entwickelt worden.
SFOP nutzt Segmentierungsfehler aus. Sie werden durch den Versuch eines Programms ausgelöst, auf einen gesperrten Speicherbereich zuzugreifen. Wenn ein Segmentierungsfehler auftritt, sendet der Kernel ein Signal namens SIGSEGV an das Programm und weist auf den Verstoß hin. Genau in diesem Moment können Angreifende SFOP auslösen, wie Bajo erklärt: „Das Signal, auf das wir abzielen, ist SIGSEGV, das Segmentierungsfehler-Signal. Wenn die Anwendung ausgeführt wird und Zugriff auf einen Speicherbereich anfordert, auf den sie keinen Zugriff haben sollte, oder eine Anweisung ausführt, die unter CET ungültig ist, erkennt der Kernel das und sagt: ‚Das ist nicht erlaubt, ich werde dich stoppen.‘ In diesem Moment wird das Signal an die Anwendung gesendet, und die Anwendung muss darauf reagieren.“
Bei SFOP nutzen Angreifende diesen Mechanismus aus, indem sie Code-Schnipsel einfügen, die als Signal-Handler für das SIGSEGV-Signal fungieren und die Reaktion des Programms koordinieren. Bajo erläutert: „SFOP ist im Grunde eine Kette von Signal-Handlern. Die Angreifenden registrieren ständig Signal-Handler, sodass das Programm seine Tätigkeit unterbricht, den Code ausführt, abstürzt, dann zum nächsten Signal-Handler weitergeht, diesen ausführt, erneut abstürzt und so weiter. Deshalb nennen wir den Angriff ‚segmentation fault oriented programming‘. Die Art und Weise, wie Code-Schnipsel aneinandergereiht werden, erzeugt ständig Segmentierungsfehler und lässt das Programm abstürzen.“ Indem die Angreifenden jedes Mal ein anderes Stück Code verwenden, können sie in jedem Schritt dieser Reihe unterschiedliche Dinge erreichen, vom Öffnen einer Datei bis zum Senden von Daten.
In Linux-Systemen dienen Signale dazu, ein laufendes Programm über asynchrone Ereignisse zu informieren und es beispielsweise aufzufordern, einen Prozess zu beenden, anzuhalten oder fortzusetzen. Solche asynchronen Ereignisse stellen CFI-Abwehrmechanismen oft vor Herausforderungen, wie Bajo betont: „Wir haben in vorangegangener Forschung bereits die Erfahrung gemacht, dass asynchrone Mechanismen für CFI-Verfahren problematisch sein können – sie sind nicht in der Lage, sie gut zu handhaben. Außerdem sind Schutzmechanismen meist entweder für die Programme oder für den Kernel ausgelegt. Immer, wenn es einen Mechanismus gibt, der sich zwischen den Programmen und dem Kernel hin- und herbewegt, kann man vermuten, dass dabei etwas schiefgehen könnte.“ Während Intel CET in Linux-Systemen ordnungsgemäß implementiert wurde, haben Bajo und seine Co-Autoren insgesamt 12 neue Schwachstellen im Kernel selbst entdeckt, die die Signalbehandlung in Linux betreffen. Zusammengenommen ermöglichen sie es SFOP, seine volle Wirkung zu entfalten.
Laut Bajo und seinen Co-Autoren zählt SFOP zu den „low-hanging fruit“ unter den Code-Reuse-Angriffen, da er bei allen Programmen auf einem Linux-System durchführbar ist. „Signale sind standardmäßig vorhanden, sie sind fest in Linux integriert, und man kann sie nicht einfach deaktivieren. Signale sind nichts, worauf die Programmierer das Programm vorbereiten müssen. Vielmehr verfügt jedes Programm, das man erstellt, bereits über sie“, betont Bajo. Zum Patchen von SFOP haben die Forschenden daher die Schwachstellen adressiert, die sie im Linux-Kernel gefunden haben. In Zusammenarbeit mit dem Linux Kernel Security Team haben Bajo, Chatzianagnostou, Rossow und Goyal bereits eine Anzahl von Patches entwickelt, die SFOP erfolgreich entschärfen. Die CISPA-Forschung zu SFOP wird am 20. Mai 2026 auf dem IEEE Security Symposium on Security and Privacy in San Francisco vorgestellt.
Weitere Informationen über SFOP, einschließlich aller Codes, Artifakte und Materialien, sind verfügbar bei GitHub: https://github.com/signal-sfop/sfop/
Marcos Bajo und Apostolos Chatzianagnostou
CISPA Helmholtz-Zentrum für Informationssicherheit
Stuhlsatzenhaus 5
66123 Saarbrücken
marcos.sanchez-bajo@cispa.de / apostolos.chatzianagnostou@cispa.de
Bajo, Marcos; Goyal, Ritvik; Chatzianagnostou, Apostolos; Rossow, Christian (2026) “Crashing through Defenses: Exploiting Segfaults and Chaining around Intel CET” In: 47th IEEE Security Symposium on Security and Privacy, 18-21 May 2026, San Francisco, CA, USA.