Les Buffers Overflows Techniques et évolution par Raphaël GERMON
Le Return-to-libc
Explication :
Une attaque de type return-to-libc est une attaque informatique démarrant généralement par un buffer overflow mais à la place d'écraser l'adresse de retour vers un shellcode, on l'écrase vers une bibliothèque chargée en mémoire pour simuler l'appel d'une fonction. Ceci permet à un attaquant d'utiliser une fonction existante et d'éviter d'injecter du code malveillant dans le programme.
La bibliothèque partagée libc
fourni le moteur d'exécution C sur les systèmes de type
Unix. Bien que l'attaquant puisse faire pointer l'adresse de retour
n'importe où, libc
est la cible la plus
probable car étant toujours liée au programme et fournissant des
fonctions utiles (comme la fonction system()
qui ne nécessite qu'un seul paramètre et permet d'exécuter un
programme arbitraire). C'est pour cette raison que cet exploit est
appelé return-to-libc même si l'adresse de retour peut pointer sur
un endroit totalement différent.
On peut donc facilement détourner l'usage d'un programme en contrôlant les fonctions de ce programme qu'on souhaite appeler.
Exemple
Pour donner un exemple simple, imaginons qu'un programme est un texte, et que les fonctions sont des mots. En prenant que certain mot on peut complètement changer le sens de la phrase.
Cette sauce provoque une explosion de saveur en bouche, comme prévu c'était délicieux. Je vais en refaire demain mais je n?ai pas reçu tous les ingrédients, hum mais c?était si bon. On se donne rdv à 17H pour acheter tout ça demain.
Cette sauce provoque une explosion de saveur en bouche, comme prévu c'était délicieux. Je vais en refaire demain mais je n?ai pas reçu tous les ingrédients, hum mais c?était si bon. On se donne rdv à 17H pour acheter tout ça demain.
--> Explosion prévu demain, reçu ingrédient, rdv demain 17H