On entend beaucoup parler des buffer overflow (« débordement de tampon » en français) . Il paraît que c'est un problème dans la programmation en C qui entraîne un crash lors de l'exécution et qui peut être utilisé par un hacker… Ok, ça tout le monde le sait :-|. On entend beaucoup parler de ça mais c'est quoi concrètement ? Comment peut-on réussir à prendre le contrôle d'une machine par un « débordement de tampon » ? Et apparemment ça se fait même à distance !
Les attaques par buffer overflow nécessitent des connaissances en organisation mémoire et en programmation C . Pour illustrer tout ceci, nous allons commencer par prendre un code C simple vulnérable au buffer overflow ; nous allons ainsi analyser l'exécution du programme avec gdb qui nous permettra justement de comprendre le buffer overflow. Enfin, nous allons montrer comment utiliser le buffer overflow pour exécuter un code arbitraire et dans le cas d'espèce, un shell.
L'attaque par buffer overflow existe depuis fort longtemps. Il s'agit d'une attaque utilisée pour les logiciels programmés en langage C. Pour preuve, en 1988 un vers programmé par un étudiant de l'université de Cornell avait réussi à infecter des milliers d'ordinateurs avant d'être stoppé 10 heures après. Il exploitait un bug mystérieux dû au débordement de la pile des programmes sendmail et finger qui lui permettait d'ouvrir un shell à distance. Qu'on soit d'accord : le buffer overflow...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première