Comment fonctionnent les attaques par débordement de tampon ? Aller dans les coulisses en tant que hacker

Comment fonctionnent les attaques par débordement de tampon ? Aller dans les coulisses en tant que hacker
Des lecteurs comme vous aident à soutenir MUO. Lorsque vous effectuez un achat en utilisant des liens sur notre site, nous pouvons gagner une commission d'affiliation. En savoir plus.

Comment les pirates attaquent-ils les systèmes à l'aide de virus et de logiciels malveillants ? Parfois, il peut s'agir d'un rançongiciel ; parfois, il peut s'agir d'une attaque qui consomme la configuration système requise. Le Buffer Overflow est l'une de ces méthodes d'attaque, mais qu'est-ce que c'est réellement ? Comment fonctionnent ces attaques ?





UTILISEZ LA VIDÉO DU JOUR FAITES DÉFILER POUR CONTINUER AVEC LE CONTENU

Qu'est-ce qu'un débordement de tampon ?

Alors, qu'est-ce qu'un tampon et une pile ? Le tampon est un champ dans lequel certaines informations d'entrée 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 fatigante pour le système. Ainsi, lorsqu'il y a suffisamment d'espace dans la zone tampon, vous appelez les données directement à partir d'ici. Cela signifie une amélioration des performances de votre appareil. Bien entendu, lorsque l'espace disponible pour le buffer est plein, il devient nécessaire de l'écrire en mémoire.





Stack est essentiellement une structure de données dans laquelle des opérations de poussée (ajout) et d'extraction (suppression) 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 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 souhaitez 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, causant des dommages.

C'est idéal pour les pirates. Les cybercriminels peuvent combiner ce gâchis 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 tampon, les principaux sujets que vous devez reconnaître seront les Architecture interne du processeur , les registres de mémoire et la façon dont la mémoire traite les données. Voici quelques termes sur le CPU que vous devez connaître.





Code d'assemblage





Un langage de programmation de bas niveau , c'est-à-dire proche du langage machine.

comment trouver des messages supprimés sur Messenger

Amortir

Une taille fixe espace mémoire alloué .

Code d'octet

Une forme compilable de langage intermédiaire de code écrit dans un langage de haut niveau.

Compilateur

Un 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

Sans comprendre la théorie de la mémoire, il peut être difficile de résoudre les problèmes de dépassement de mémoire tampon dans la pratique. Vous pouvez y penser comme si vous essayiez de construire une maison sans savoir comment construire un mur.

Imaginez que vous souhaitiez exécuter un débordement de tampon du point de vue d'un pirate informatique. Pour cela, vous devez manipuler la mémoire et faire exécuter votre code par le CPU. Si vous étiez quelqu'un avec une intention malveillante, votre objectif ici serait de surcharger la mémoire et de manipuler également les zones de mémoire contiguës.

  Diagramme montrant la pile qui grandit et le tas qui grandit

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

Lors de la création de la pile, la mémoire utilise des adresses mémoire hautes. Les adresses de mémoire haute signifient la zone de mémoire étendue. Ensuite, les valeurs d'adresse 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 dans la mémoire de la pile ne sont valides que dans la portée dans laquelle elles sont définies. S'ils sont en dehors de cette portée, une erreur se produira.

La mémoire de la pile, en revanche, fonctionne de manière dynamique et n'a pas à démarrer à des adresses élevées. Il n'y a pas de limite définie pour la mémoire de tas ; toutes les limites sont fixées par le système d'exploitation. Il est possible de modifier dynamiquement la mémoire du tas et ces limites peuvent changer en fonction des besoins de l'utilisateur lors de l'utilisation du tas. Les limites de la mémoire de tas dépendent de facteurs déterminés par le système d'exploitation et le matériel. En d'autres termes, il offre une utilisation dynamique dans ces limites.

Le segment de texte contient le code de programme et les segments de données contiennent des données globales. Partage d'adresses élevées mémoire de pile et de tas entre eux. Le système alloue les deux mémoires lors de l'exécution.

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

  • ESP (pointeur de pile étendu) : Ce registre contient l'adresse en haut de la pile.
  • EBP (pointeur de base étendu): Ceci contient le pointeur de base.
  • EIP (pointeur d'instruction étendu): Et ce registre contient l'adresse de la prochaine instruction à exécuter.

Ces termes techniques peuvent sembler un peu déroutants, mais imaginez-les tous comme de petites partitions en mémoire.

Comment fonctionnent les attaques par débordement de tampon ?

Lorsque vous ajoutez de nouvelles données à n'importe quelle pile, ces données seront insérées en haut. Toutes les nouvelles données sont ensuite déplacées vers le bas. L'ESP est au sommet de la pile. Donc, dans ce cas, l'ESP passe à une adresse mémoire inférieure. Imaginez les données ajoutées ci-dessus poussant l'ESP vers le bas.

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

Lorsqu'un programme démarre, le système crée un cadre de pile avec des variables locales. L'objectif principal d'une attaque par débordement de tampon est d'accéder à l'EIP ou à l'adresse de retour. Un pirate informatique ayant accès à cette adresse peut lui ordonner de pointer vers n'importe quel code malveillant de son choix, ce qui affectera alors l'ensemble du système.

  Un diagramme montrant les données dans l'ESP ciblant l'adresse de retour

Avec chaque nouveau bit de données, la pile grandit vers l'EBP. La vraie question ici est, 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 souhaitez se trouvent sur l'EIP et vous pouvez voir les résultats souhaités. Il ne reste plus qu'à l'exécuter. Lorsque vous exécutez le programme, il pointe vers votre code EIP et démarre l'exécution. En conséquence, si vous étiez un hacker, vous aurez effectué votre première attaque par débordement de tampon.

Pour prendre l'exemple sous un angle différent, vous pouvez considérer des liquides de densités différentes, appelés ESP, EBP et EIP, dans un récipient. Imaginez que l'ESP soit situé en haut du conteneur car sa densité est plus faible. Tout comme l'huile d'olive et l'eau, ils 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 du liquide et se mélange à l'EIP. Cela indiquera un débordement de tampon.

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

Alors, comment empêchez-vous que cela se produise?

Premièrement, il est important d'adopter de bonnes pratiques de codage tout au long du processus de développement logiciel afin de minimiser les vulnérabilités de sécurité. Un code écrit avec soin peut réduire la probabilité de débordements de tampon.

Une autre étape consiste à utiliser des mécanismes de défense pour permettre de surveiller les régions de 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 pour les attaquants d'exploiter les vulnérabilités connues. De plus, l'utilisation d'outils de défense tels que les logiciels et les pare-feu fournit une couche de sécurité supplémentaire.

Prendre des mesures contre les débordements de 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 elles. Heureusement, il est possible de bloquer ces attaques et de renforcer les mécanismes de défense. De nombreuses bonnes pratiques de sécurité, comme la mise à jour des logiciels pour corriger les correctifs, aident à se protéger contre de telles attaques, ainsi que d'autres vulnérabilités.