Définition Buffer overflow

502px-Buffer_overflow_basicexample.svg_.pngq0b1p0a1.png
502px-Buffer_overflow_basicexample.svg_.pngq0b1p0a1.png

Définition Buffer overflow

375 lecteurs
Sommaire de l'article

Qu’est-ce qu’un dépassement de mémoire tampon ?

Le dépassement de tampon se produit lorsqu’une application qui écrit des données dans une mémoire dépasse la capacité du tampon. C’est un peu comme si vous versiez 12 onces de lait dans un verre de 8 onces.

Qu’est-ce qu’un dépassement de mémoire tampon ?

Le débordement de la mémoire tampon est un problème qui se produit lorsqu’un logiciel écrit des données dans une mémoire tampon en dépassant la capacité de cette dernière, ce qui conduit à écraser la mémoire des emplacements adjacents. Dans le sens où des données excessives sont transférées dans des conteneurs qui ne contiennent pas assez d’espace. L’information finira par remplacer l’information dans les conteneurs adjacents.

Les débordements de tampon sont exploités par des attaquants pour altérer la mémoire d’un ordinateur afin de prendre le contrôle de l’exécution d’un programme.

File :Buffer overflow basicexample.svg - Wikimedia Commons

Qu’est-ce qu’un tampon ?

Un tampon, également appelé tampon de données, est un espace physique de la mémoire qui peut stocker temporairement des données lors de leur transfert d’un emplacement à un autre. Ils sont généralement stockés dans la mémoire vive. Les ordinateurs utilisent souvent les tampons pour améliorer leurs performances ; la majorité des disques durs modernes utilisent la mise en mémoire tampon pour accéder efficacement aux données et de nombreux services en ligne utilisent également les tampons. Par exemple, les tampons sont couramment utilisés pour la diffusion de vidéos en ligne afin d’éviter les interruptions. Lors de la diffusion d’une vidéo en continu, le lecteur télécharge la vidéo et stocke environ 20 % de la vidéo en une seule fois dans une mémoire tampon, puis la diffuse à partir de cette dernière. De cette façon, même des ralentissements mineurs de la vitesse de connexion ou des interruptions de service n’auront pas d’impact sur la vitesse de diffusion de la vidéo.

Les mémoires tampons sont conçues pour stocker certaines quantités de données. Si le programme qui utilise la mémoire tampon est accompagné d’instructions permettant d’éliminer les données lorsqu’une trop grande quantité de données est transférée dans la mémoire tampon, celle-ci écrasera alors les données stockées dans la mémoire adjacente à la mémoire tampon.

Voir Aussi  Mgéfi mon compte : suivre mes remboursements dans mon espace adhérent

Les débordements de tampon sont la cible des pirates informatiques qui cherchent à corrompre les logiciels. Bien qu’elles soient largement comprises et qu’elles constituent un problème de sécurité majeur, les attaques par dépassement de tampon restent un problème de sécurité important qui préoccupe beaucoup les équipes de cybersécurité. En 2014, une menace de sécurité appelée « heartbleed » a provoqué l’exposition de millions d’utilisateurs à des vulnérabilités de dépassement de tampon qui étaient présentes dans le logiciel SSL.

Comment les attaquants peuvent-ils exploiter un dépassement de mémoire tampon ?

Un attaquant pourrait délibérément introduire une entrée soigneusement conçue dans un programme, ce qui amène le programme à essayer de stocker l’entrée dans un espace mémoire qui n’est pas suffisant, écrasant ainsi les zones de la mémoire qui sont connectées à l’espace tampon. Si la disposition de la mémoire du programme est clairement spécifiée, l’attaquant peut délibérément effacer les zones qui contiennent du code exécutable. L’attaquant est alors en mesure de modifier le code exécutable en créant le sien, ce qui peut altérer de façon spectaculaire la façon dont le programme est censé fonctionner.

Par exemple, si une mémoire qui a été écrasée contient le pointeur (un objet qui pointe vers un endroit différent de la mémoire), le code de l’attaquant pourrait être remplacé par un pointeur différent qui indique une charge utile liée à un exploit. Cela pourrait signifier que le contrôle complet de l’ensemble du programme passe au programme de l’attaquant.

Qui est le plus exposé aux attaques par débordement de mémoire tampon ?

Certains langages de programmation sont plus sujets aux débordements de mémoire tampon que d’autres. Le C et le C++ sont deux langages bien connus qui sont extrêmement vulnérables car ils ne disposent d’aucune protection intégrée pour empêcher l’accès aux données stockées dans leur mémoire ou leur écrasement. Windows, Mac OSX et Linux ont tous du code écrit dans l’un ou l’autre de ces langages, voire dans les deux.

Voir Aussi  LCL Particuliers : accès à mon compte en ligne sur www.lcl.fr

Les langages modernes tels que Java, PERL et C# sont dotés de fonctions intégrées qui peuvent réduire le risque de surcharge de la mémoire tampon, mais ne peuvent pas l’empêcher complètement.

Comment se protéger contre les attaques par débordement de mémoire tampon
Heureusement, les systèmes d’exploitation modernes sont dotés de protections d’exécution qui permettent de réduire les débordements de mémoire tampon et les attaques. Examinons deux mesures de sécurité courantes qui permettent de réduire les risques d’exploitation.

Randomisation de l’espace d’adressage – Réarrangement aléatoire des adresses des zones de données clés au sein d’un processus. Les attaques par débordement de tampon nécessitent généralement de pouvoir localiser l’emplacement du code exécutable, mais la randomisation de l’espace d’adressage rend cela impossible.

La prévention de l’exécution des données marque des régions spécifiques de la mémoire comme étant exécutables et inaccessibles afin d’empêcher un exploit d’exécuter un code qui n’est pas exécutable dans cette zone.
Les développeurs de logiciels sont également en mesure de se protéger contre les vulnérabilités de type « buffer overflow » en écrivant des langages protégés par des sauvegardes intégrées ou en mettant en œuvre des mesures de sécurité spéciales dans leur code.

Malgré ces précautions, les développeurs continuent de découvrir de nouvelles vulnérabilités au dépassement de tampon. Parfois, elles apparaissent suite à des exploits réussis. En cas de découverte d’une nouvelle vulnérabilité, les développeurs doivent appliquer un correctif à leur logiciel afin de s’assurer que les utilisateurs puissent y accéder.

Quels sont les différents types d’attaques par débordement de mémoire tampon ?

Il existe de nombreuses attaques par débordement de mémoire tampon qui utilisent différentes stratégies et attaquent différents éléments de code. Voici quelques-unes des attaques les plus connues.

Voir Aussi  Comment fonctionne un QR Code ?

Débordement d’un entier – Dans une attaque par débordement, une procédure arithmétique produit un entier (nombre entier) qui est trop grand pour être le type d’entier qui est destiné à le stocker. Cela peut entraîner un débordement dans le tampon.
Débordement Unicode Le débordement Unicode provoque des débordements de tampon en insérant des caractères Unicode dans une entrée qui nécessite des caractères ASCII. (L’ASCII ainsi que l’unicode sont des codeurs qui permettent aux ordinateurs d’afficher du texte. Par exemple, la lettre « a » est représentée par le chiffre 97 en ASCII. Cependant, alors que les codes ASCII ne s’appliquent qu’aux caractères des langues occidentales, l’unicode peut créer des caractères pour presque toutes les langues écrites dans le monde. Comme il existe de nombreux autres caractères dans l’unicode, certains caractères Unicode sont plus grands que le plus grand caractère ASCII).

Les ordinateurs s’appuient sur deux modèles distincts d’allocation de la mémoire, également connus sous le nom de tas et de pile, qui résident tous deux dans la mémoire vive de l’ordinateur. La pile est bien organisée et stocke les données selon le modèle « Last-In First-Out ». Les données qui ont été stockées en dernier sur la pile sont les premières à en être retirées, tout comme la balle qui est la dernière à être mise dans un canon à munitions sera la première à être tirée. Le tas est un stockage chaotique de la mémoire et les données n’entrent pas dans le tas et n’en sortent pas dans un ordre particulier. Comme il est plus rapide d’accéder à la mémoire par la pile que par le tas, le tas est généralement réservé aux données plus importantes ou que le programmeur souhaite gérer d’une manière spécifique.

Pour en savoir plus :

4.1/5 - (11 votes)
Marine
Marine

Passionnée par l'entreprenariat depuis plus de 10 ans, je suis à la tête d'une société française visant à favoriser la communication des entreprises. Également attiré par la finance, je partage mes conseils et expériences au travers mes articles de blog.

Retour en haut