Return-Oriented Programming
Was ist Return-Oriented Programming?
Return-Oriented ProgrammingReturn-Oriented Programming (ROP) ist eine Exploit-Technik des Code-Reuse, die kurze, mit RET endende Instruktionsfolgen verkettet, um beliebige Berechnungen ohne neuen Code auszufuehren.
Hovav Shacham praesentierte ROP 2007 als Umgehung von DEP/W^X. Der Angreifer beschaedigt den Stack und legt eine Kette von Adressen ab, die je auf kurze, mit RET endende Gadgets zeigen. Nach jedem Gadget popt RET die naechste Adresse; aus vorhandenen ausfuehrbaren Bytes (libc, Bibliotheken, Programm) entsteht eine Turing-vollstaendige Berechnung. Varianten sind JOP (Jumps), COP (Calls) und SROP (Signal-Frames). ROP war der Hauptantrieb fuer ASLR, CFI, Stack Canaries, Shadow Stacks, Intel CET und memory-safe Sprachen; Gegenmassnahmen zielen auf Gadget-Verfuegbarkeit, Kontrollfluss-Integritaet oder Memory Safety im Quellcode.
● Beispiele
- 01
Exploit verkettet pop-rdi/syscall-Gadgets in glibc, um execve("/bin/sh") aufzurufen.
- 02
Kernel-Exploit nutzt KASLR-Leak und ROP zu commit_creds(prepare_kernel_cred(0)).
● Häufige Fragen
Was ist Return-Oriented Programming?
Return-Oriented Programming (ROP) ist eine Exploit-Technik des Code-Reuse, die kurze, mit RET endende Instruktionsfolgen verkettet, um beliebige Berechnungen ohne neuen Code auszufuehren. Es gehört zur Kategorie Anwendungssicherheit der Cybersicherheit.
Was bedeutet Return-Oriented Programming?
Return-Oriented Programming (ROP) ist eine Exploit-Technik des Code-Reuse, die kurze, mit RET endende Instruktionsfolgen verkettet, um beliebige Berechnungen ohne neuen Code auszufuehren.
Wie schützt man sich gegen Return-Oriented Programming?
Schutzmaßnahmen gegen Return-Oriented Programming kombinieren typischerweise technische Kontrollen und operative Praktiken, wie in der Definition oben beschrieben.
Welche anderen Bezeichnungen gibt es für Return-Oriented Programming?
Übliche alternative Bezeichnungen: ROP, Code-Reuse-Angriff, Return-to-libc.