Return-Oriented Programming
Qu'est-ce que Return-Oriented Programming ?
Return-Oriented ProgrammingLe ROP est une technique d'exploitation par reutilisation de code qui enchaine de courtes sequences terminees par RET pour executer un calcul arbitraire sans injecter de code.
Hovav Shacham a publie ROP en 2007 pour contourner DEP/W^X. L'attaquant corrompt la pile et y ecrit une chaine d'adresses pointant chacune vers un gadget court termine par RET. A la fin de chaque gadget, RET depile l'adresse suivante, produisant un calcul Turing-complet a partir uniquement d'octets executables existants (libc, bibliotheques, programme). Les variantes incluent JOP (jmp), COP (call) et SROP (signal frames). Le ROP a motive la generalisation d'ASLR, CFI, canaris, shadow stacks, Intel CET et des langages a memoire sure ; les defenses ciblent la disponibilite des gadgets, l'integrite du flot ou la securite de la memoire au niveau du code source.
● Exemples
- 01
Exploit enchainant des gadgets pop-rdi/syscall de la glibc pour appeler execve("/bin/sh").
- 02
Exploit noyau combinant fuite KASLR et ROP vers commit_creds(prepare_kernel_cred(0)).
● Questions fréquentes
Qu'est-ce que Return-Oriented Programming ?
Le ROP est une technique d'exploitation par reutilisation de code qui enchaine de courtes sequences terminees par RET pour executer un calcul arbitraire sans injecter de code. Cette notion relève de la catégorie Sécurité applicative en cybersécurité.
Que signifie Return-Oriented Programming ?
Le ROP est une technique d'exploitation par reutilisation de code qui enchaine de courtes sequences terminees par RET pour executer un calcul arbitraire sans injecter de code.
Comment fonctionne Return-Oriented Programming ?
Hovav Shacham a publie ROP en 2007 pour contourner DEP/W^X. L'attaquant corrompt la pile et y ecrit une chaine d'adresses pointant chacune vers un gadget court termine par RET. A la fin de chaque gadget, RET depile l'adresse suivante, produisant un calcul Turing-complet a partir uniquement d'octets executables existants (libc, bibliotheques, programme). Les variantes incluent JOP (jmp), COP (call) et SROP (signal frames). Le ROP a motive la generalisation d'ASLR, CFI, canaris, shadow stacks, Intel CET et des langages a memoire sure ; les defenses ciblent la disponibilite des gadgets, l'integrite du flot ou la securite de la memoire au niveau du code source.
Comment se défendre contre Return-Oriented Programming ?
Les défenses contre Return-Oriented Programming combinent habituellement des contrôles techniques et des pratiques opérationnelles, comme détaillé dans la définition ci-dessus.
Quels sont les autres noms de Return-Oriented Programming ?
Noms alternatifs courants : ROP, Attaque par reutilisation de code, Return-to-libc.
● Termes liés
- appsec№ 064
ASLR
La randomisation de l'espace d'adressage place aleatoirement le code, les piles, les tas et les bibliotheques en memoire afin qu'un attaquant ne puisse pas predire les adresses cibles.
- appsec№ 303
DEP
La prevention d'execution des donnees (DEP / NX / W^X) marque les pages memoire comme non executables pour empecher un attaquant d'executer du shellcode injecte dans la pile ou le tas.
- appsec№ 217
Integrite du flot de controle
L'integrite du flot de controle (CFI) restreint les appels indirects et les retours du programme a un ensemble precalcule de cibles legitimes, bloquant ROP et JOP.
- appsec№ 1028
Shadow stack
Une shadow stack est une pile separee et protegee qui conserve des copies des adresses de retour afin que le processeur detecte une alteration de la pile normale et bloque les attaques ROP.
- appsec№ 545
Intel CET
Intel CET (Control-flow Enforcement Technology) est une fonctionnalite du processeur qui combine une shadow stack materielle et l'Indirect Branch Tracking (IBT) pour bloquer ROP, JOP et COP.
- appsec№ 670
Securite memoire
La securite memoire est la propriete qu'un programme ne lise, n'ecrive ni n'execute jamais une memoire qu'il n'a pas legitimement allouee, ce qui supprime des classes entieres de vulnerabilites.
● Voir aussi
- № 1095Canari de pile
- № 1058SMEP / SMAP
- № 671Langages memory safe