Securi-toile

Vous êtez sur : Blog Documentations Réseaux Qu'est-ce que les attaques par débordement de tampon ?

Qu'est-ce que les attaques par débordement de tampon ?

Envoyer Imprimer PDF

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 et qui compromettra la cible permettant ainsi l' (acquisition des droits administrateur, etc...). Ce type d'attaque peux être exploité par n'importe quelle application (navigateur, logiciel mail, etc...) ou un service (comprendre un programme en réseau, comme par exemple un service Web).

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.

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.

A propos

Sécurite informatique Eric Seguinard
Securi-Toile
9 Bd de la République
Istres 13800 France
06 10 81 62 02
Du lundi au vendredi de 9h à 19h.

Label Orange b2b site web partenaire