Qu’est-ce que le Buffer overflow ?

Un Buffer overflow se produit lorsqu’un programme qui écrit des données dans une mémoire tampon surcharge la capacité de cette mémoire tampon. C’est comme si l’on versait 12 onces de lait dans un verre de 8 onces.

Qu’est-ce qu’un buffer overflow ?

Le Buffer overflow est une anomalie qui se produit lorsqu’un logiciel écrivant des données dans une mémoire tampon dépasse la capacité de cette dernière, entraînant l’écrasement des emplacements mémoire adjacents. En d’autres termes, trop d’informations sont transmises dans un conteneur qui n’a pas assez d’espace, et ces informations finissent par remplacer les données dans les conteneurs adjacents.

Les Buffer overflows peuvent être exploités par des attaquants dans le but de modifier la mémoire d’un ordinateur afin de saper ou de prendre le contrôle de l’exécution d’un programme.

 

File:Buffer overflow basicexample.svg - Wikimedia Commons

Qu’est-ce qu’une mémoire tampon ?

Un tampon, ou tampon de données, est une zone de stockage physique de la mémoire utilisée pour stocker temporairement des données pendant qu’elles sont déplacées d’un endroit à un autre. Ces tampons vivent généralement dans la mémoire RAM. Les ordinateurs utilisent fréquemment des tampons pour améliorer leurs performances ; la plupart des disques durs modernes profitent de la mise en mémoire tampon pour accéder efficacement aux données, et de nombreux services en ligne utilisent également des tampons. Par exemple, les tampons sont fréquemment utilisés dans les flux vidéo en ligne pour éviter les interruptions. Lorsqu’une vidéo est diffusée en continu, le lecteur vidéo télécharge et stocke peut-être 20 % de la vidéo à la fois dans une mémoire tampon, puis la diffuse en continu à partir de cette mémoire tampon. De cette façon, des baisses mineures de la vitesse de connexion ou des interruptions rapides du service n’affecteront pas les performances du flux vidéo.

Les tampons sont conçus pour contenir des quantités spécifiques de données. À moins que le programme qui utilise la mémoire tampon n’ait des instructions intégrées pour éliminer les données lorsqu’une quantité trop importante est envoyée à la mémoire tampon, le programme écrasera les données dans la mémoire adjacente à la mémoire tampon.

Les Buffer overflow peuvent être exploités par des attaquants pour corrompre des logiciels. Bien qu’elles soient bien comprises, les attaques par buffer overflow restent un problème de sécurité majeur qui tourmente les équipes de cybersécurité. En 2014, une menace connue sous le nom de « heartbleed » a exposé des centaines de millions d’utilisateurs à des attaques en raison d’une vulnérabilité de débordement de mémoire tampon dans les logiciels SSL.

Comment les attaquants exploitent les Bufferoverflow ?

Un attaquant peut délibérément introduire une entrée soigneusement conçue dans un programme qui fera que le programme essaiera de stocker cette entrée dans une mémoire tampon qui n’est pas assez grande, en écrasant les portions de mémoire connectées à l’espace tampon. Si la disposition de la mémoire du programme est bien définie, l’attaquant peut délibérément écraser des zones connues pour contenir du code exécutable. L’attaquant peut alors remplacer ce code par son propre code exécutable, ce qui peut changer radicalement la façon dont le programme est censé fonctionner.

Par exemple, si la partie écrasée en mémoire contient un pointeur (un objet qui pointe vers un autre endroit en mémoire), le code de l’attaquant pourrait remplacer ce code par un autre pointeur qui pointe vers une charge utile d’exploitation. Cela peut transférer le contrôle de l’ensemble du programme au code de l’attaquant.

Qui est vulnérable aux attaques par buffer overflow ?

Certains langages de codage sont plus sensibles que d’autres aux débordements de mémoire tampon. Le C et le C++ sont deux langages populaires qui présentent une grande vulnérabilité, car ils ne contiennent aucune protection intégrée contre l’accès ou l’écrasement de données dans leur mémoire. Windows, Mac OSX et Linux contiennent tous du code écrit dans l’un de ces langages ou dans les deux.

Les langages plus modernes comme Java, PERL et C# ont des caractéristiques intégrées qui aident à réduire les risques de buffer overflow, 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 disposent de protections d’exécution qui aident à atténuer les attaques par débordement de mémoire tampon. Examinons deux protections communes qui contribuent à atténuer le risque d’exploitation :

Randomisation de l’espace d’adressage – Réorganise de manière aléatoire les emplacements de l’espace d’adressage des zones de données clés d’un processus. Les attaques par débordement de mémoire tampon reposent généralement sur la connaissance de l’emplacement exact du code exécutable important, la randomisation des espaces d’adresses rend cela presque impossible.

Prévention de l’exécution des données – Marque certaines zones de la mémoire comme exécutables ou non exécutables, empêchant un exploit d’exécuter le code trouvé dans une zone non exécutable.
Les développeurs de logiciels peuvent également prendre des précautions contre les vulnérabilités de type « buffer overflow » en écrivant dans des langages qui ont des protections intégrées ou en utilisant des procédures de sécurité spéciales dans leur code.

Malgré ces précautions, les développeurs continuent de découvrir de nouvelles vulnérabilités par débordement de la mémoire tampon, parfois à la suite d’une exploitation réussie. Lorsque de nouvelles vulnérabilités sont découvertes, les ingénieurs doivent corriger le logiciel concerné et s’assurer que les utilisateurs du logiciel ont accès au correctif.

Quels sont les différents types d’attaques par Bufferoverflow tampon ?

Il existe un certain nombre d’attaques par dépassement de la limite de la mémoire tampon qui utilisent des stratégies différentes et ciblent des morceaux de code différents. En voici quelques-unes parmi les plus connues.

Attaque par débordement d’entier – Dans une attaque par débordement d’entier, une opération arithmétique aboutit à un entier (nombre entier) trop grand pour le type d’entier destiné à le stocker ; cela peut entraîner un débordement de tampon.
Unicode overflow – Un débordement d’unicode crée un débordement de tampon en insérant des caractères unicode dans une entrée qui s’attendent à des caractères ASCII. (ASCII et unicode sont des normes de codage qui permettent aux ordinateurs de représenter du texte. Par exemple, la lettre « a » est représentée par le chiffre 97 en ASCII. Alors que les codes ASCII ne couvrent que les caractères des langues occidentales, l’unicode peut créer des caractères pour presque toutes les langues écrites du monde. Comme il y a beaucoup plus de caractères disponibles en unicode, de nombreux caractères unicode sont plus grands que le plus grand caractère ASCII).

*Les ordinateurs reposent sur deux modèles d’allocation de mémoire différents, connus sous le nom de pile et de tas ; tous deux vivent dans la mémoire vive de l’ordinateur. La pile est proprement organisée et contient des données selon le modèle « Last-In, First-Out ». Les données les plus récemment placées dans la pile seront les premières à en sortir, un peu comme la dernière balle insérée dans un magasin de munitions sera la première à être tirée. Le tas est un réservoir désorganisé de mémoire supplémentaire, les données n’entrent pas dans le tas et ne le quittent pas dans un ordre particulier. Comme l’accès à la mémoire à partir de la pile est beaucoup plus rapide que l’accès à partir du tas, le tas est généralement réservé aux données plus volumineuses ou aux données qu’un programmeur veut gérer explicitement.

 

Découvrez en plus sur :

Articles connexes

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

TESTEZ LA PERFORMANCE DIGITALE DE VOTRE SITE EN 5 MINUTES, CLIQUEZ ICI :
parcours-performance-digitale
parcours-performance-digitale
CONTACTEZ-NOUS
Une question, une campagne media à lancer ?
Vous êtes au bon endroit !
WINDOWS SERVER
VOUS AVEZ AIMÉ
COVID-19