Débordement de tampon
Qu'est-ce que Débordement de tampon ?
Débordement de tamponFaille de sûreté mémoire où un programme écrit au-delà de la fin d'un tampon alloué, corrompant la mémoire adjacente et permettant souvent l'exécution de code.
Les débordements de tampon surviennent lorsque, dans des langages comme C ou C++, les longueurs d'entrée ne sont pas correctement bornées par rapport à la taille du tampon destination. Les octets excédentaires écrasent les cadres de pile, les chunks de tas, les pointeurs de fonction ou les adresses de retour voisins, permettant aux attaquants de détourner le flux d'exécution ou de fuiter des données. Un écrasement de pile classique remplace l'adresse de retour sauvegardée, de sorte que la fonction « retourne » vers le shellcode fourni par l'attaquant ; les débordements de tas, eux, corrompent les métadonnées de l'allocateur ou les objets adjacents pour obtenir une primitive d'écriture.
Ce schéma a façonné l'histoire d'Internet. En 1988, le Morris Worm s'est propagé via un débordement de pile dans le fingerd de BSD ; Code Red (2001) a exploité un tampon non vérifié dans le filtre ISAPI .ida d'IIS (CVE-2001-0500) ; et SQL Slammer (2003) a exploité le débordement du SQL Server Resolution Service (MS02-039 / CVE-2002-0649), infectant environ 75 000 hôtes en dix minutes via un unique paquet UDP de 404 octets vers le port 1434 — six mois après la publication du correctif.
L'écriture hors limites (CWE-787) s'est classée au 2e rang du CWE Top 25 de 2024, juste derrière le XSS. Les mitigations modernes combinent canaries de pile, ASLR, DEP/NX, Control-Flow Integrity (Intel CET, ARM PAC/BTI), fonctions libc plus sûres, durcissement du compilateur (_FORTIFY_SOURCE), fuzzing et — de plus en plus — le portage du code critique vers des langages memory-safe comme Rust.
flowchart TD
A[Attaquant envoie une entrée surdimensionnée] --> B{Longueur vérifiée par<br/>rapport à la taille du tampon ?}
B -->|Oui, bornée| C[Entrée tronquée / rejetée]
B -->|Pas de vérification| D[Écriture au-delà de la fin du tampon]
D --> E[Écrasement de l'adresse de retour<br/>ou d'un pointeur de fonction]
E --> F[Flux d'exécution détourné]
F --> G[Exécution du shellcode / chaîne ROP de l'attaquant]
C --> H[Le programme continue sans danger]● Exemples
- 01
CVE-2014-0160 (Heartbleed) : débordement de lecture mémoire dans OpenSSL.
- 02
Ver Morris (1988) : exploitation d'un débordement de pile dans fingerd.
● Questions fréquentes
Qu'est-ce que Débordement de tampon ?
Faille de sûreté mémoire où un programme écrit au-delà de la fin d'un tampon alloué, corrompant la mémoire adjacente et permettant souvent l'exécution de code. Cette notion relève de la catégorie Vulnérabilités en cybersécurité.
Que signifie Débordement de tampon ?
Faille de sûreté mémoire où un programme écrit au-delà de la fin d'un tampon alloué, corrompant la mémoire adjacente et permettant souvent l'exécution de code.
Comment se défendre contre Débordement de tampon ?
Les défenses contre Débordement de tampon combinent habituellement des contrôles techniques et des pratiques opérationnelles, comme détaillé dans la définition ci-dessus.
Quels sont les autres noms de Débordement de tampon ?
Noms alternatifs courants : Dépassement de mémoire tampon.