Aller au contenu

Glossaire

Return-to-libc (ret2libc)

Attaque par réutilisation de code qui redirige l'exécution vers une fonction existante de la bibliothèque C, comme system(), au lieu d'injecter du nouveau code.

Le return-to-libc (ret2libc) est une technique de return-oriented programming qui déjoue la mémoire non exécutable en retournant vers une fonction qui existe déjà dans la bibliothèque C, le plus souvent system("/bin/sh"), plutôt qu'en exécutant du code fourni par l'attaquant. Comme la bibliothèque partagée est chargée à une base randomisée sous ASLR, l'attaquant commence généralement par obtenir une fuite d'adresse résolue de la bibliothèque pour calculer où réside system, puis écrase une adresse de retour sauvegardée pour l'appeler.

Pour les défenseurs, ret2libc explique pourquoi PIE et le durcissement contre les fuites d'information sont importants : sans fuite, la base de la bibliothèque est inconnue, et sans adresse de retour sauvegardée inscriptible, l'appel n'a jamais lieu. Une shadow stack détecte le retour corrompu. Voir le tutoriel sur le retour dans la libc.