Return-to-libc attack

Return-to-libc attack

Une attaque de type return-to-libc est une attaque informatique démarrant généralement par un dépassement de tampon dans lequel l'adresse de retour dans la pile est remplacée par l'adresse d'une autre fonction et une seconde partie de la pile est modifiée pour fournir les paramètres à cette 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.

Sommaire

Protections

Une pile non-exécutable peut protéger de l'exploitation de certains dépassements de tampon mais pas d'une attaque de type return-to-libc car seul du code exécutable existant est utilisé.

D'autres protections contre les dépassements de tampon peuvent empêcher ou entraver l'exploitation en détectant la corruption de la pile et éventuellement supprimer le segment compromis.

L'address space layout randomization (ASLR) laisse très peu de chance de réussite pour ce type d'attaque sur une machine 64-bits car les positions des fonctions en mémoire sont aléatoires. Pour les systèmes 32-bits, l'ASLR n'est pas très avantageux car seuls 16 bits sont aléatoires, et peuvent ainsi être trouvés par force brute en quelques minutes[1].

Dans certains systèmes d'exploitation, le chargement des bibliothèques en mémoire s'effectue à une adresse contenant au moins un octet de poids fort égal à 0x00. Ceci empêche l'attaquant d'utiliser l'adresse lors de l'exploitation du buffer overflow, l'octet 0x00 (null) correspondant au caractère de fin de chaîne. Cette protection peut cependant être contournée en spécifiant l'adresse d'une instruction de saut vers la bibliothèque contenue dans la zone mémoire du programme exécuté. Par exemple, l'attaquant pourrait indiquer l'adresse d'une instruction de la Procedure Linkage Table (dans le format de fichier ELF) chargée de faire la liaison entre l'exécutable et les fonctions qu'il utilise dans les bibliothèques partagées lors de l'édition de liens dynamique.

Attaques semblables

Le return-oriented programming (en) un perfectionnement des techniques utilisées dans cette attaque pouvant être utilisé pour exécuter des opérations plus générales en enchaînant de plus petites attaques exécutant un plus petit nombre d'instructions à la fois.

Voir aussi

Articles connexes

Liens externes

Références

  1. Shacham, Hovav; Page, Matthew; Pfaff, Ben; Goh, Eu-Jin; Modadugu, Nagendra; and Boneh, Dan. "On the Effectiveness of Address-Space Randomization". Proceedings of Computer and Communications Security (CCS'04), October 25–29, 2004, Washington (DC). 

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Return-to-libc attack de Wikipédia en français (auteurs)

Игры ⚽ Поможем написать реферат

Regardez d'autres dictionnaires:

  • Return-to-libc attack — A return to libc attack is a computer security attack usually starting with a buffer overflow in which the return statement on the stack is replaced by the address of another instruction and an additional portion of the stack is overwritten to… …   Wikipedia

  • PaX — In computer security, PaX is a patch for the Linux kernel that implements least privilege protections for memory pages. The least privilege approach allows computer programs to do only what they have to do in order to be able to execute properly …   Wikipedia

  • Buffer overflow — In computer security and programming, a buffer overflow, or buffer overrun, is an anomalous condition where a process attempts to store data beyond the boundaries of a fixed length buffer. The result is that the extra data overwrites adjacent… …   Wikipedia

  • Атака возврата в библиотеку — (англ. Return to libc attack)  один из видов компьютерных атак, популярных на x86 совместимых машинах и схожих с ними, связанных с переполнением буфера, когда адрес возврата функции на стеке подменяется адресом иной функции в программе …   Википедия

  • PAX — Pour les articles homonymes, voir Pax. PaX a sa propre version de la mascotte de Linux, Tux PaX est un patch de sécurité pour le …   Wikipédia en Français

  • Address space layout randomization — (ASLR) is a computer security technique which involves randomly arranging the positions of key data areas, usually including the base of the executable and position of libraries, heap, and stack, in a process s address space. Benefits Address… …   Wikipedia

  • Executable space protection — In computer security, executable space protection is the marking of memory regions as non executable, such that an attempt to execute machine code in these regions will cause an exception. It makes use of hardware features such as the NX bit.The… …   Wikipedia

  • Position-independent code — In computing, position independent code (PIC) or position independent executable (PIE) is machine instruction code that executes properly regardless of where in memory it resides. PIC is commonly used for shared libraries, so that the same… …   Wikipedia

  • PaX — Pour les articles homonymes, voir Pax. PaX a sa propre version de la mascotte de Linux, Tux PaX est un correctif (patch) de sécurité pour le noyau Linux cr …   Wikipédia en Français

  • Exploit (Informatique) — Cet article fait partie de la série Programmes malveillants Virus Cabir MyDoom.A Tchernobyl …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”