Un dépassement de mémoire tampon est ce qui se produit lorsqu'un programme effectue une entrée dans la mémoire d'un ordinateur qui est plus long que l'espace alloué. Dans certaines circonstances, cela peut corrompre d'autres données en mémoire, ce qui provoque des problèmes dans le fonctionnement de l'ordinateur. Dans d'autres cas un dépassement de mémoire tampon peut être exploitée par une application malveillante de prendre le contrôle d'autres parties de l'ordinateur.
Le nom d'un dépassement de mémoire tampon provient d'abord de la pile, qui est en fait une liste active dans laquelle les données sont organisées: le terme vient de l'analogie d'empiler des objets physiques. Une version de ce fait, la pile d'appel, la liste qu'un programme informatique utilise pour garder une trace des différentes parties du programme, les sous-programmes, qui fonctionnent à un moment donné. Comme la pile d'appel fonctionne sur une base temporaire et doit être accessible rapidement, il se trouve dans la mémoire de l'ordinateur plutôt que dans le stockage permanent comme le disque dur.
Parce que les systèmes d'exploitation modernes permettent d'exécuter plusieurs programmes à la fois, il est nécessaire d'organiser la façon dont la mémoire est allouée, y compris les piles à appeler. Cela se fait efficacement en attribuant des tampons, un espace dans la mémoire conçu pour être assez grand pour faire face à l'espace maximum requis par un tampon particulier. Dans la plupart des cas, partie de l'espace sera utilisé, il agit comme un tampon entre les données provenant de différentes applications, laissant la place à faire face si l'on exige tout d'un coup l'espace supplémentaire. Une façon de le visualiser serait de penser à une bibliothèque qui a alloué une certaine quantité d'espace pour chaque matière, en veillant à laisser un peu de place pour faire face si, par exemple, tous les livres sur un sujet se trouvaient dans la bibliothèque de l’en même temps, plutôt que l'un d'eux en cours d'extraction.
Un débordement de la pile se produit lorsqu'un programme écrit des données d'appels de pile de la mémoire tampon d'une manière qui dépasse l'espace alloué. Cela peut se produire par erreur, généralement par le biais d'un bug dans un programme. Par exemple, si une application est conçue pour permettre à l'utilisateur de taper un numéro de téléphone, mais n'a pas de limite sur le nombre de caractères pouvant être saisis, un hacker peut être en mesure d'utiliser le champ illimité de causer intentionnellement un dépassement de mémoire tampon. En fonction de la façon dont fonctionne le système d'exploitation, ce qui pourrait permettre au pirate d'accéder indirectement soit une autre application ou le système d'exploitation lui-même.
Il existe plusieurs approches pour atténuer contre les effets d'un dépassement de mémoire tampon. L'un est connu comme randomisation du format d'espace d'adresse. Ceci arrange les domaines les plus importants de données sur l'ordinateur de façon aléatoire. L'idée est que même si un pirate ne provoquer ou d'exploiter un débordement de pile, il ne sera pas en mesure d'exploiter la brèche de manière fiable.