À retenir
- C'est l'une des failles de sécurité les plus anciennes et les plus critiques.
- Cela peut entraîner un crash du logiciel ou une prise de contrôle par un pirate.
- Le problème vient d'une absence de vérification de la taille des données par le programmeur.
Imaginez un verre d'eau d'une capacité précise : si vous essayez d'y verser plus de liquide qu'il ne peut en contenir, le surplus déborde et mouille la table. En informatique, c'est la même chose : un programme écrit des données dans une zone mémoire (le tampon) qui est trop petite, ce qui finit par écraser les informations voisines.
Étymologie
Traduction directe du terme anglais buffer overflow. Le mot "tampon" (ou buffer) désigne ici une zone de stockage temporaire en mémoire vive, tandis que le "dépassement" évoque l'incapacité du système à contenir un flux de données trop important.
Exemples d'usage
- Un formulaire de connexion qui attend un nom d'utilisateur mais reçoit un texte de 10 000 caractères, provoquant l'arrêt du service.
- Une application de traitement d'image qui plante car elle essaie d'ouvrir un fichier dont les dimensions sont plus grandes que ce qu'elle avait prévu en mémoire.
Cas d'usage
Ce concept est central en cybersécurité lors de la recherche de vulnérabilités et en développement système, particulièrement avec des langages proches du matériel comme le C ou le C++ qui ne gèrent pas automatiquement les limites de la mémoire.
Bonnes pratiques
Il est crucial de toujours vérifier la longueur des données fournies par l'utilisateur avant de les enregistrer. Les développeurs doivent privilégier des fonctions sécurisées qui limitent le nombre de caractères copiés et, si possible, utiliser des langages de programmation modernes dits "sûrs" qui gèrent ces vérifications automatiquement.
Synonymes
Antonymes
Conseil
Si vous débutez en programmation système, apprenez dès le premier jour à ne jamais faire confiance aux entrées de l'utilisateur. Vérifiez systématiquement que ce que vous recevez peut tenir dans l'espace que vous avez réservé.
Questions fréquentes
Pourquoi est-ce dangereux pour la sécurité ?
En faisant déborder le tampon, un attaquant peut réussir à injecter et exécuter son propre code malveillant à la place du programme légitime.
Est-ce que cela arrive dans tous les langages ?
Non, les langages récents comme Python, Java ou Rust possèdent des mécanismes internes qui empêchent ce type d'erreur par défaut.