Qu'est-ce qu'un débordement de tampon ? Une explication pratique
Découvrez comment les débordements de tampon fonctionnent réellement avec un vrai exemple en C, un diagramme de pile et les outils pour le voir par vous-même.
Un débordement de tampon se produit quand un programme écrit plus de données dans un bloc de mémoire de taille fixe que ce bloc ne peut en contenir. Les octets supplémentaires débordent dans la mémoire adjacente, et selon ce qui se trouve à côté de ce tampon, vous pouvez corrompre des variables, faire planter le programme ou détourner complètement le flux d'exécution. C'est l'une des plus anciennes classes de bogues en sécurité logicielle et elle apparaît toujours dans les CTFs, les CVEs et les micrologiciels intégrés aujourd'hui.
Le motif vulnérable
Voici un exemple classique en C :
#include <string.h>
void greet(char *name) {
char buffer[64];
strcpy(buffer, name);
}
int main(int argc, char **argv) {
greet(argv[1]);
return 0;
}
strcpy copie la chaîne que vous lui passez dans buffer, sans vérification des limites. Si argv[1] fait plus de 64 octets, la copie continue au-delà de la fin du tableau. Sur la pile, buffer se situe sous d'autres variables locales, des registres sauvegardés, et finalement l'adresse de retour qui indique au CPU où sauter après la fin de greet(). Si vous écrasez cette adresse de retour avec une adresse que vous contrôlez, vous contrôlez ce qui s'exécute ensuite.
Pourquoi cela compile et s'exécute toujours
C et C++ ne font pas de vérification automatique des limites sur les tableaux bruts. Les fonctions comme strcpy, gets, sprintf et strcat vont volontiers écrire au-delà de la fin d'un tampon car elles ne se soucient que d'un terminateur nul ou d'une longueur source, pas de la taille réelle de la destination. Comparez cela à strncpy ou snprintf, qui prennent un argument de taille explicite et s'arrêtent là. La vulnérabilité n'est pas vraiment
Rédigé avec l'aide de l'IA, relu et publié par Michal Pilch (CISSP), Korra Studio.
Ceci est une note de la base de connaissances de Korra Studio — la plateforme associe chaque sujet à un mentorat individuel.
Commencer gratuitementarrow_forward