Accueil Technologie

Comment fonctionnent les attaques par débordement de mémoire tampon ? Les coulisses du piratage informatique

Comment les pirates informatiques attaquent-ils les systèmes à l’aide de virus et de logiciels malveillants ? Parfois, il s’agit d’un ransomware ; parfois, il s’agit d’une attaque qui consomme les besoins de votre système. Le débordement de mémoire tampon est l’une de ces méthodes d’attaque, mais de quoi s’agit-il réellement ? Comment ces attaques fonctionnent-elles ?


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

Qu’est-ce qu’une mémoire tampon et une pile ? La mémoire tampon est un champ où les informations que vous donnez à votre ordinateur attendent avant d’atteindre la mémoire. Le rappel des données de la mémoire est une opération fastidieuse pour le système. Par conséquent, lorsqu’il y a suffisamment d’espace dans la zone tampon, vous appelez les données directement à partir de cette zone. Les performances de votre appareil s’en trouvent améliorées. Bien entendu, lorsque l’espace disponible pour la mémoire tampon est plein, il devient nécessaire d’écrire les données dans la mémoire.

La pile est essentiellement une structure de données dans laquelle les opérations de push (ajout) et de pop (retrait) de données ont lieu. Les concepts de tampon et de pile sont assez similaires ; cependant, le tampon fonctionne comme une pile qui stocke temporairement les données entrantes.

Les débordements de mémoire tampon peuvent être un sujet difficile, mais comme leur nom l’indique, ils se produisent lorsqu’il y a une surcharge de données. Par exemple, vous voulez vous connecter à un système. Les développeurs peuvent allouer 250 octets d’espace pour le nom d’utilisateur. Si vous entrez 300 octets de données, la mémoire tampon déborde. Ce débordement peut affecter d’autres données dans la mémoire et causer des dommages.

C’est une bonne chose pour les pirates informatiques. Les cybercriminels peuvent combiner ce désordre avec différents vecteurs d’attaque, par exemple pour pirater le système et se connecter en tant qu’administrateur.

Pour comprendre le débordement de mémoire tampon, les principaux sujets que vous devez connaître sont l’architecture interne de l’unité centrale, les registres de mémoire et la manière dont la mémoire traite les données. Voici quelques termes relatifs à l’unité centrale que vous devez connaître.

Code assembleur

Langage de programmation de bas niveau, c’est-à-dire proche du langage machine.

Tampon

Un espace mémoire alloué de taille fixe.

Code de l’octet

Forme de langage intermédiaire compilable d’un code écrit dans un langage de haut niveau.

Compilateur

Programme qui convertit le langage de programmation en code machine.

Tas

Espace mémoire dynamique et variable.

Les fondements de la théorie de la mémoire

Si l’on ne comprend pas la théorie de la mémoire, il peut être difficile d’aborder les problèmes de débordement de mémoire tampon dans la pratique. C’est un peu comme si l’on essayait de construire une maison sans savoir comment faire un mur.

Imaginez que vous vouliez exécuter un débordement de mémoire tampon du point de vue d’un pirate. Pour cela, vous devez manipuler la mémoire et faire en sorte que l’unité centrale exécute votre code. Si vous étiez quelqu’un de mal intentionné, votre objectif serait de surcharger la mémoire et de manipuler des zones de mémoire contiguës.

Diagramme montrant la croissance de la pile vers le bas et du tas vers le haut

Mais tout d’abord, vous devez vous concentrer sur les concepts de tas, de pile et de segment de texte.

Pendant que la pile est créée, la mémoire utilise les adresses de mémoire haute. Les adresses mémoire élevées correspondent à la zone de mémoire étendue. Ensuite, les valeurs des adresses commencent à diminuer. La pile de mémoire utilise une méthode appelée LIFO (Last In, First Out) lors de l’utilisation de la mémoire. Les variables de la mémoire de la pile ne sont valables que dans le champ d’application dans lequel elles sont définies. Si elles se trouvent en dehors de cette zone, une erreur se produit.

La mémoire de pile, quant à elle, fonctionne de manière dynamique et n’a pas besoin de commencer à des adresses élevées. Il n’y a pas de limite fixe pour la mémoire de tas ; toutes les limites sont fixées par le système d’exploitation. Il est possible de modifier la mémoire de tas de manière dynamique et ces limites peuvent changer en fonction des besoins de l’utilisateur pendant l’utilisation du tas. Les limites de la mémoire vive dépendent de facteurs déterminés par le système d’exploitation et le matériel. En d’autres termes, elle offre une utilisation dynamique à l’intérieur de ces limites.

Le segment de texte contient le code du programme et les segments de données contiennent les données globales. Les adresses élevées partagent entre elles la pile et le tas de mémoire. Le système alloue ces deux mémoires au moment de l’exécution.

Pour mieux comprendre le débordement de mémoire tampon, vous devez examiner les registres de données à usage général que votre architecture informatique utilise pour stocker les données. Au lieu d’analyser chaque enregistrement individuellement, concentrez-vous sur l’essentiel.

  • ESP (Extended Stack Pointer) : Ce registre contient l’adresse du sommet de la pile.
  • EBP (Extended Base Pointer) : Il s’agit du pointeur de base.
  • EIP (Extended Instruction Pointer) : Ce registre contient l’adresse de la prochaine instruction à exécuter.

Ces termes techniques peuvent sembler un peu confus, mais imaginez-les comme de petites partitions de la mémoire.

Comment fonctionnent les attaques par débordement de mémoire tampon ?

Lorsque vous ajoutez de nouvelles données à une pile, ces données sont placées en haut de la pile. Toutes les nouvelles données sont ensuite déplacées vers le bas. L’ESP se trouve au sommet de la pile. Dans ce cas, l’ESP va donc à une adresse mémoire inférieure. Imaginez que les données ajoutées ci-dessus poussent l’ESP vers le bas.

Diagramme montrant que l'espace tampon se situe quelque part entre ESP et EBP

Lorsqu’un programme commence à s’exécuter, le système crée un cadre de pile avec des variables locales. L’objectif principal d’une attaque par débordement de mémoire tampon est d’obtenir l’accès à l’EIP ou à l’adresse de retour. Un pirate ayant accès à cette adresse peut la faire pointer vers n’importe quel code malveillant qu’il souhaite, qui affectera alors l’ensemble du système.

Diagramme montrant les données de l'ESP ciblant l'adresse de retour

Avec chaque nouveau bit de données, la pile croît en direction de l’EBP. La vraie question est la suivante : si nous entrons trop de données, pouvons-nous pousser l’EBP vers l’EIP ? De cette façon, les données ou le code que vous voulez se trouvent sur l’EIP et vous pouvez voir les résultats que vous voulez. Il ne reste plus qu’à l’exécuter. Lorsque vous exécutez le programme, il pointe vers votre code EIP et commence à s’exécuter. Ainsi, si vous êtes un pirate informatique, vous aurez réalisé votre première attaque par débordement de mémoire tampon.

Pour prendre l’exemple sous un angle différent, vous pouvez considérer des liquides de différentes densités, appelés ESP, EBP et EIP, dans un conteneur. Imaginons que l’ESP se trouve en haut du récipient parce que sa densité est plus faible. Tout comme l’huile d’olive et l’eau, ces deux liquides ne doivent pas se mélanger. Le code malveillant est donc un autre liquide – lorsque vous l’ajoutez au conteneur, il perturbe cet équilibre, déplace un peu de liquide et se mélange à l’EIP. Cela indique un dépassement de la mémoire tampon.

Comment se protéger contre les attaques par débordement de mémoire tampon ?

Alors, comment empêcher que cela ne se produise ?

Tout d’abord, il est important d’adopter de bonnes pratiques de codage tout au long du processus de développement du logiciel afin de minimiser les vulnérabilités en matière de sécurité. Un code soigneusement écrit peut réduire la probabilité de débordements de mémoire tampon.

Une autre étape consiste à utiliser des mécanismes de défense permettant de surveiller les régions de la mémoire, de vérifier les limites des tampons et de détecter les attaques. Enfin, vous devez régulièrement mettre à jour les systèmes et appliquer des correctifs. Les mises à jour qui corrigent les vulnérabilités rendent plus difficile l’exploitation des vulnérabilités connues par les attaquants. En outre, l’utilisation d’outils de défense tels que des logiciels et des pare-feu constitue une couche de sécurité supplémentaire.

Prendre des mesures contre les débordements de mémoire tampon

Les attaques par débordement de mémoire tampon constituent une menace importante pour votre cybersécurité et il est naturellement important de prendre des précautions contre ces attaques. Heureusement, il est possible de bloquer ces attaques et de renforcer les mécanismes de défense. De nombreuses bonnes pratiques de sécurité, telles que la mise à jour des logiciels pour corriger les correctifs, aident à se protéger contre ces attaques, ainsi que contre d’autres vulnérabilités.

Leave your vote

0 0 votes
Évaluation de l'article
S’abonner
Notification pour
guest
0 Commentaires
Commentaires en ligne
Afficher tous les commentaires

Log In

Forgot password?

Don't have an account? Register

Forgot password?

Enter your account data and we will send you a link to reset your password.

Your password reset link appears to be invalid or expired.

Log in

Privacy Policy

Add to Collection

No Collections

Here you'll find all collections you've created before.

0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x

Newsletter

inscrivez vous pour recevoir nos actualités

Actualités, astuces, bons plans et cadeaux !