Jump-Oriented Programming (JOP)
Was ist Jump-Oriented Programming (JOP)?
Jump-Oriented Programming (JOP)Code-Reuse-Technik (Bletsch et al., 2011), die Gadgets mit indirekten Spruengen ueber einen Dispatcher verkettet, ein ROP-Aequivalent ohne ret.
JOP wurde 2011 von Bletsch, Jiang, Freeh und Liang als Verallgemeinerung von Return-Oriented Programming eingefuehrt. Statt Gadgets, die mit ret enden, verwendet JOP Gadgets, die mit indirekten Spruengen wie jmp [rax] enden, und einen angreiferkontrollierten Dispatcher, der eine Tabelle von Gadget-Adressen abarbeitet. Da der Aufrufstack nicht mehr zur Flusssteuerung dient, umgeht JOP aeltere Gegenmassnahmen wie Shadow Stacks oder Stack Canaries, die auf ret-Ketten zielen. JOP-Ketten wurden praktisch auf Windows, Linux und Embedded-Systemen demonstriert, oft kombiniert mit Info-Leaks gegen ASLR. Moderne Hardware-Defenses sind Intel CET/IBT und ARM BTI, die indirekte Sprungziele beschraenken und naive JOP-Ketten brechen.
● Beispiele
- 01
JOP-Kette gegen Embedded-Firmware mit gehaertetem Call-Stack, aber unbeschraenkten indirekten Spruengen.
- 02
Kombination eines JOP-Dispatchers mit libc auf Linux, um execve trotz reiner Shadow-Stack-Verteidigung aufzurufen.
● Häufige Fragen
Was ist Jump-Oriented Programming (JOP)?
Code-Reuse-Technik (Bletsch et al., 2011), die Gadgets mit indirekten Spruengen ueber einen Dispatcher verkettet, ein ROP-Aequivalent ohne ret. Es gehört zur Kategorie Angriffe und Bedrohungen der Cybersicherheit.
Was bedeutet Jump-Oriented Programming (JOP)?
Code-Reuse-Technik (Bletsch et al., 2011), die Gadgets mit indirekten Spruengen ueber einen Dispatcher verkettet, ein ROP-Aequivalent ohne ret.
Wie funktioniert Jump-Oriented Programming (JOP)?
JOP wurde 2011 von Bletsch, Jiang, Freeh und Liang als Verallgemeinerung von Return-Oriented Programming eingefuehrt. Statt Gadgets, die mit ret enden, verwendet JOP Gadgets, die mit indirekten Spruengen wie jmp [rax] enden, und einen angreiferkontrollierten Dispatcher, der eine Tabelle von Gadget-Adressen abarbeitet. Da der Aufrufstack nicht mehr zur Flusssteuerung dient, umgeht JOP aeltere Gegenmassnahmen wie Shadow Stacks oder Stack Canaries, die auf ret-Ketten zielen. JOP-Ketten wurden praktisch auf Windows, Linux und Embedded-Systemen demonstriert, oft kombiniert mit Info-Leaks gegen ASLR. Moderne Hardware-Defenses sind Intel CET/IBT und ARM BTI, die indirekte Sprungziele beschraenken und naive JOP-Ketten brechen.
Wie schützt man sich gegen Jump-Oriented Programming (JOP)?
Schutzmaßnahmen gegen Jump-Oriented Programming (JOP) kombinieren typischerweise technische Kontrollen und operative Praktiken, wie in der Definition oben beschrieben.
Welche anderen Bezeichnungen gibt es für Jump-Oriented Programming (JOP)?
Übliche alternative Bezeichnungen: JOP.
● Verwandte Begriffe
- attacks№ 753
one_gadget RCE
Exploit-Abkuerzung in CTFs und realen Angriffen: ein einziger libc-Sprung startet eine Shell, sofern Register- und Stack-Bedingungen erfuellt sind.
- appsec№ 217
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.
- appsec№ 064
ASLR
Address Space Layout Randomization platziert Code, Stacks, Heaps und Bibliotheken bei jedem Programmstart zufaellig im Speicher, sodass Angreifer Zieladressen nicht vorhersagen koennen.
- vulnerabilities№ 667
Speicherkorruption
Sammelbegriff für Schwachstellen, bei denen ein Programm außerhalb der vorgesehenen Speichergrenzen schreibt und so Typsicherheit, Kontrollfluss oder Datenintegrität untergräbt.