Résumé
Les attaques par dépassement de tampon se produisent lorsqu’un programme écrit des données au-delà de l’espace mémoire qui lui est attribué, créant ainsi une faille permettant aux hackers d’injecter du code malveillant et de prendre le contrôle d’un système. Les attaques peuvent cibler la pile ou le tas et sont plus fréquentes dans les anciens programmes complexes écrits dans des langages comme C/C++ ou l’assembleur. Pour se protéger contre ces menaces, il est nécessaire de moderniser les systèmes existants, d’appliquer rapidement les correctifs de sécurité, d’utiliser des langages de programmation plus sûrs et d’activer les protections de l’espace exécutable.
Fonctionnement des attaques par dépassement de tampon
Lors d’un dépassement de tampon, un programme place des données dans une zone mémoire située en dehors du tampon. Cette étape peut endommager vos données ou provoquer l’arrêt inopiné de votre programme.
Les hackers le savent et utilisent parfois votre tampon en apparence anodin pour prendre le contrôle de votre appareil.
Essentiellement, un tampon est une solution précieuse si l’un de vos programmes manque de mémoire et souhaite éviter un plantage. Le programme peut stocker des données dans ce tampon et continuer à fonctionner. Lorsque votre programme a besoin de plus de mémoire que ce qu’il peut trouver dans un tampon, il devient vulnérable à une attaque par dépassement de tampon.
Les attaques par dépassement de tampon sont à l’origine de certains des exemples de piratage les plus tristement célèbres, du ver Morris en 1998 à Stagefright en 2015.
Expliquons comment ils fonctionnent, et nous vous aiderons à comprendre comment vous en protéger.
Qu’est-ce qu’un dépassement de tampon ?
Presque tous les ordinateurs disposent d’un tampon. Cet espace dédié peut stocker ou transporter des données, ce qui vous permet de continuer à travailler sans subir de multiples interruptions. Mais même le meilleur tampon disponible a ses limites. Et lorsque vous le dépassez, un débordement commence.
Un dépassement de tampon peut être :
| Type | Cause | Effet |
|---|---|---|
| Accidentel | Vous essayez d’en faire trop au sein d’un même programme, et vous dépassez l’espace qui vous est alloué par ce programme. | Le programme peut commencer à se comporter de manière imprévisible et, dans certains cas, cesser complètement de fonctionner. |
| Intentionnel | Une personne envoie des données trop volumineuses pour votre programme. Cet ensemble de données contient du code pouvant remplacer les versions valides. | Lorsque le nouveau code s’exécute, il peut amener le programme à effectuer des actions inattendues. |
Il peut sembler difficile pour un hacker de concevoir un programme capable à la fois de comprendre parfaitement votre programme et de modifier son fonctionnement. Mais malheureusement, ces attaques sont relativement courantes.
Quels sont les types d’attaques par dépassement de tampon ?
Chaque programme contient un buffer, mais une personne malveillante peut utiliser l’une des deux méthodes suivantes pour en prendre le contrôle et lancer une attaque.
Une attaque par dépassement de tampon peut être :
| Type d’attaque | Méthode | Résultat |
|---|---|---|
| Basé sur une pile | Votre attaquant envoie des données à un programme, et cette transmission est stockée dans un tampon de pile trop petit. Votre hacker pourrait choisir une fonction « push » et stocker de nouveaux éléments en haut de la pile. Ou le hacker pourrait choisir une fonction « pop », retirer l’élément en haut de la pile et le remplacer. | Cela signifie que le hacker a officiellement inséré un code malveillant et pris le contrôle. |
| Basé sur le tas | Votre hacker corrompt des données dans le tas. | Cette modification du code oblige votre système à écraser des données importantes. |
En tant qu’utilisateur ou utilisatrice, il est possible que vous ne constatiez pas ces changements. Mais si vous n’arrêtez pas la progression, votre programme risque de connaître des ralentissements et des blocages. Avec le temps, il pourrait planter.
Comme les dépassements de tampon visent souvent des programmes essentiels, tels que les systèmes d’exploitation, une attaque pourrait vous laisser avec un appareil que vous ne pouvez plus contrôler.
Qu’est-ce qui rend votre programme vulnérable à un dépassement de tampon ?
Prévenir une attaque est plus simple que d’en gérer les conséquences. Heureusement, de nombreuses actions peuvent être mises en place pour protéger votre entreprise.
Commencez par examiner le code que vous utilisez pendant le développement. Les langages de programmation vulnérables aux attaques par dépassement de tampon incluent :
- Assemblée
- C/C++
- Fortran
Ces langages ne disposent d’aucune protection intégrée et ne permettent pas de contrôles réguliers des dépassements de capacité.
Quelles caractéristiques du code font de votre programme une cible ?
Ensuite, examinez votre code. Il est plus facile pour un hacker de lancer une attaque lorsque vos programmes sont :
- Complexe. Avez-vous du mal à anticiper le comportement de votre programme ?
- Externe. Avez-vous besoin de données tierces ou externes pour contrôler les actions au sein du programme ? Les propriétés des données sont-elles contrôlées de l’extérieur ?
- Plus ancien. Avez-vous utilisé des composants hérités pour concevoir le programme ?
Presque toutes les entreprises disposent d’un ancien programme développé sur mesure, utilisé quotidiennement par l’ensemble des collaborateurs et collaboratrices. Vous pouvez hésiter à remplacer ce système, puisqu’il a été conçu spécialement pour vous. Mais il est évident que les systèmes existants présentent des risques difficiles à réduire ou à éliminer.
Comment prévenir une attaque par dépassement de tampon ?
Les hackers s’appuient sur les buffers depuis des années, mais de nouvelles opportunités pour leurs activités apparaissent. Par exemple, selon les experts, les appareils connectés (y compris des éléments de l’Internet des objets comme les réfrigérateurs et les sonnettes) pourraient être vulnérables à ces attaques.
Quelles mesures pouvez-vous prendre pour prévenir une attaque par dépassement de tampon ?
Protégez votre entreprise en suivant ces mesures de bon sens :
- Utiliser de nouveaux systèmes d’exploitation. Il est temps d’abandonner les anciens programmes dont les systèmes de support ne sont plus maintenus. Les codes plus récents intègrent davantage de protections.
- Surveillez votre langage. Les programmes écrits en Common Business-Oriented Language (COBOL), Python et Java sont probablement plus sûrs que d’autres.
- Ajouter un espace. Certains programmes permettent de mettre en place des protections de l’espace exécutable. Lorsqu’elle est activée, un hacker ne peut pas exécuter de code inséré lors d’une attaque par dépassement de mémoire.
- Comptez sur les développeurs. Les administrateurs et administratrices système se plaignent souvent que les développeurs et développeuses ignorent leurs signalements de bugs. Soyez persévérant. Lorsque vous identifiez un problème susceptible de provoquer un dépassement de tampon, continuez d’en parler jusqu’à ce qu’une personne le corrige.
- Appliquez vos correctifs. Lorsque les développeurs découvrent des problèmes de dépassement de tampon, ils les corrigent avec du code. En février 2021, par exemple, les développeurs de Sudo ont publié un correctif de ce type et ont encouragé les personnes concernées à l’utiliser.
Surveiller votre code, analyser les comportements et tester fréquemment sont autant de bonnes pratiques. Mais pour protéger votre entreprise, vous devrez aller encore plus loin.
Collaborez avec Okta pour protéger vos ressources les plus importantes grâce à un système d’authentification forte. En savoir plus sur la façon dont nous pouvons accompagner des entreprises comme la vôtre.
Foire aux questions (FAQ)
Qu’est-ce qu’une attaque par dépassement de tampon ?
Une attaque par dépassement de tampon se produit lorsqu’un programme reçoit plus de données que la mémoire tampon qui lui est allouée ne peut en contenir. L’excès de données déborde dans la mémoire adjacente, ce qui peut corrompre les données existantes, provoquer l’arrêt du programme ou permettre à une personne malveillante d’injecter et d’exécuter du code malveillant.
Quelle est la différence entre un débordement de tampon basé sur la pile et un débordement de tampon basé sur le tas ?
Dans une attaque basée sur la pile, l’attaquant envoie à un programme des données stockées dans un tampon de pile de taille insuffisante et utilise les fonctions « push » ou « pop » pour insérer du code malveillant. Dans une attaque basée sur le tas, l’attaquant ou l’attaquante corrompt des données dans la zone de mémoire du tas, ce qui oblige le système à écraser des données critiques.
Quels langages de programmation sont les plus exposés aux attaques par dépassement de tampon ?
Les langages comme l’assembleur, le C/C++ et le Fortran sont particulièrement vulnérables, car ils ne disposent d’aucune protection intégrée contre les dépassements de capacité et ne prennent pas en charge les vérifications systématiques de dépassement. Les langages comme COBOL, Python et Java sont généralement considérés comme des alternatives plus sûres.
Quels types de programmes sont les plus exposés à un dépassement de tampon ?
Les programmes complexes et difficiles à anticiper, qui dépendent de données externes ou tierces, ou qui ont été conçus à partir de composants hérités, sont les plus vulnérables. Les anciens systèmes conçus sur mesure, que les entreprises hésitent à remplacer, constituent une source de risque fréquente.
Comment les entreprises peuvent-elles se protéger contre les attaques par dépassement de tampon ?
Les principales mesures de défense consistent à passer à des systèmes d’exploitation modernes, utiliser des langages de programmation plus sûrs, activer les protections de l’espace exécutable, appliquer rapidement les correctifs de sécurité et maintenir une communication ouverte entre les administrateurs et administratrices système et les développeurs et développeuses concernant les vulnérabilités identifiées.
Les appareils connectés sont-ils vulnérables aux attaques par dépassement de tampon ?
Oui. Des spécialistes ont observé que les appareils connectés, y compris des éléments de l’Internet des objets comme les réfrigérateurs et les sonnettes, peuvent être vulnérables aux attaques par dépassement de tampon, ce qui élargit la surface d’attaque potentielle au-delà des ordinateurs et serveurs traditionnels.
Références
Attaque par dépassement de tampon. Sécurité globale : une approche pratique.
Dépassement de tampon. OWASP.
Attaque par dépassement de tampon. Santa Clara University.
Qu’est-ce qu’un dépassement de tampon ? Et comment les hackers exploitent-ils ces vulnérabilités. (Janvier 2020). CSO.
Espace noyau : les développeurs et développeuses Linux ignorent-ils les signalements de bugs ? (septembre 2007). Networkworld.
Vulnérabilité de dépassement de tampon basé sur le tas dans Sudo. (Février 2021). Agence de cybersécurité et de sécurité des infrastructures.