Comment Ca Marche - Communauté informatique  
   
Accueil - Encyclopédie informatiqueTélécharger l'encyclopédieContribuer à cet article

Attaques - Débordement de tampon (Buffer overflow)

Débordement de tampon - Buffer overflow Encyclopédie


Introduction au buffer overflow

Les attaques par « débordement de tampon » (en anglais « Buffer overflow », parfois également appelées dépassement de tampon) ont pour principe l'exécution de code arbitraire par un programme en lui envoyant plus de données qu'il n'est censé en recevoir.

En effet, les programmes acceptant des données en entrée, passées en paramètre, les stockent temporairement dans une zone de la mémoire appelée tampon (en anglais buffer). Or, certaines fonctions de lecture, telles que les fonctions strcpy() du langage C, ne gèrent pas ce type de débordement et provoquent un plantage de l'application pouvant aboutir à l'exécution du code arbitraire et ainsi donner un accès au système.

La mise en oeuvre de ce type d'attaque est très compliquée car elle demande une connaissance fine de l'architecture des programmes et des processeurs. Néanmoins, il existe de nombreux exploits capable d'automatiser ce type d'attaque et la rendant à la portée de quasi-néophytes.

Principe de fonctionnement

Le principe de fonctionnement d'un débordement de tampon est fortement lié à l'architecture du processeur sur lequel l'application vulnérable est exécutée.

Les données saisies dans une application sont stockée en mémoire vive dans une zone appelée tampon. Un programme correctement conçu doit prévoir une taille maximale pour les données en entrées et vérifier que les données saisies ne dépassent pas cette valeur.

Les instructions et les données d'un programme en cours d'exécution sont provisoirement stockées en mémoire de manière contigûe dans une zone appelée pile (en anglais stack). Les données situées après le tampon contiennent ainsi une adresse de retour (appelée pointeur d'instruction) permettant au programme de continuer son exécution. Si la taille des données est supérieure à la taille du tampon, l'adresse de retour est alors écrasée et le programme lira une adresse mémoire invalide provoquant une faute de segmentation (en anglais segmentation fault) de l'application.

Un pirate ayant de bonnes connaissance techniques peut s'assurer que l'adresse mémoire écrasé corresponde à une adresse réelle, par exemple située dans le tampon lui-même. Ainsi, en écrivant des instructions dans le tampon (code arbitraire), il lui est simple de l'exécuter.

Il est ainsi possible d'inclure dans le tampon des instructions ouvrant un interprêteur de commande (en anglais shell) et permettant au pirate de prendre la main sur le système. Ce code arbitraire permettant d'exécuter l'interprêteur de commande est appelé shellcode.

Se protéger d'un Buffer overflow

Pour se protéger de ce type d'attaque, il est nécessaire de développer des applications à l'aide de langages de programmation évolués, assurant une gestion fine de la mémoire allouée ou bien à l'aide de langage de bas niveau en utilisant des bibliothèques de fonctions sécurisées (par exemple les fonctions strncpy()).

Des bulletins d'alerte sont régulièrement publiés, annonçant la vulnérabilité de certaines applications à des attaques par débordement de tampon. Suite à ces bulletins d'alerte, les éditeurs des logiciels touchés par la vulnérabilité publient généralement des correctifs (patchs) permettant de corriger la faille. Tout administrateur système et réseau se doit de se tenir informé des alertes de sécurité et d'appliquer le plus rapidement possible les correctifs.

Plus d'informations

Trucs & astuces pertinents trouvés dans la base de connaissances

06/08 17h55 Buffer underrun (tampon vide) (Gravure)
Buffer overflow Plus d'astuces sur « Buffer overflow »

Discussions pertinentes trouvées dans le forum

18/01 15h53 buffer overflow buffer overflow Virus/Sécurité 19/01 22h11->S!Ri2
08/01 17h42 gérer smtp buffer overflow vb gérer le smtp buffer overflow (vb) Développement 14/01 09h34->Beldyn3
02/11 16h14 message windows buffer overflow Message d'erreur windows "Buffer Overflow...& Virus/Sécurité 03/11 09h33->pl0142
07/09 12h43 buffer overflow buffer overflow Virus/Sécurité 07/09 18h40->darkcrystal331
04/07 14h57 virus buffer overflow wmedia player [Virus] buffer overflow dans Wmedia player Virus/Sécurité 04/07 15h57->green day1
03/02 13h27 projet buffer overflow Projet buffer overflow Virus/Sécurité 03/02 13h27->kevin0
14/02 00h01 buffer overflow explorer.exe kernel32 [buffer overflow] - explorer.exe:kernel32 Virus/Sécurité 14/02 00h01->Ludo0
02/02 14h26 projet buffer overflow Projet buffer overflow Virus/Sécurité 02/02 15h26->kevin1
06/06 12h10 vider buffer [C] Vider buffer Développement 06/06 20h05->sam30006
08/11 19h03 signifie stack overflow que signifie stack overflow ? Logiciels/Pilotes 09/11 08h38->djeXh4
Discussion fermée Problème résolu Buffer overflow Plus de discussions sur « Buffer overflow »

Ce document intitulé « Attaques - Débordement de tampon (Buffer overflow) » issu de l'encyclopédie informatique Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.