Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 925

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

  1. 01

    Exploit enchainant des gadgets pop-rdi/syscall de la glibc pour appeler execve("/bin/sh").

  2. 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

Voir aussi