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