Protocole concerné : Exploitation mémoire (programmes avec buffer overflow)
Principe de l’attaque : Contournement de DEP (Data Execution Prevention) en réutilisant de petits fragments de code existants appelés “gadgets” (séquences d’instructions se terminant par ret). Au lieu d’injecter du shellcode, l’attaquant chaîne ces gadgets pour créer un comportement malveillant.
Ce que permet l’attaque : Exécution de code arbitraire malgré DEP, escalade de privilèges, exécution de shellcode via réutilisation de code légitime.
Comment se protéger :
- ASLR (Address Space Layout Randomization) - randomise les adresses
- Utilisation de langages memory-safe
- Stack canaries
- Control Flow Integrity (CFI)
- Compilation avec protections (stack protector)
- Mises à jour régulières des bibliothèques
Exemple concret : Généralisation de Return-to-libc, permet d’appeler system(), puis chaîner d’autres fonctions avec des gadgets pop; ret.
Année de découverte : 2007 (Hovav Shacham) - évolution de Return-to-libc (1997)