Chaque jour, des pirates du monde entier découvrent et exploitent de nouvelles vulnérabilités dans les sites Web, les applications et même l'architecture système. Une chose commune à tous les appareils électroniques, anciens ou nouveaux, est qu'ils sont exécutés par des programmes qui sont stockés en mémoire. Les pirates ont exploité cela et trouvé des vulnérabilités connues sous le nom de débordements de tampon.
Bien qu'elles ne soient pas nouvelles, les attaques par débordement de mémoire tampon et les vulnérabilités ont fait des ravages dans le cyberespace. Ici, nous vous expliquerons ce que sont les attaques par débordement de tampon et comment vous pouvez les empêcher.
Présentation des tampons et de la mémoire système
Pour comprendre ce qu'est une attaque par débordement de tampon et comment elle fonctionne, vous devez savoir ce qu'est un tampon et comment fonctionne la mémoire d'un ordinateur.
Mémoire de pile et de tas sont deux caractéristiques principales de la mémoire d'un ordinateur. Ce sont des structures de données utilisées pour l'allocation de mémoire. Bien qu'ils soient similaires,
la pile et la mémoire de tas diffèrent de multiples manières.La pile, qui utilise le concept Last-in, First-out (LIFO), est utilisée dans la RAM (mémoire à accès aléatoire) pour stocker temporairement les exécutions de programme, tandis que le tas attribue de la mémoire en utilisant l'allocation dynamique à global variables. Mais la seule chose qu'ils ont en commun est un tampon.
Qu'est-ce qu'un tampon ?
Un tampon est une zone de mémoire utilisée pour stocker des données, très probablement dans la RAM d'un ordinateur, pendant qu'elles sont déplacées d'un emplacement à un autre. Ces données sont généralement des programmes qui doivent être exécutés. Les tampons sont stockés dans la pile ou le tas. Ils optimisent l'exécution des données.
Qu'est-ce qu'un débordement de tampon ?
Un débordement de tampon se produit lorsque le tampon reçoit plus de données que sa capacité de stockage. Parce qu'il est incapable de traiter cette quantité de données, il déborde.
Or, dans la mémoire d'un ordinateur, juste après un tampon ou un espace tampon se trouve une adresse de retour. Cette adresse de retour est en fait appelée un pointeur d'instruction étendu (EIP). Sa fonction est de pointer l'ordinateur vers un programme spécifié lorsqu'il est rempli. Lorsqu'un tampon contient plus de données qu'il ne peut en contenir et qu'il déborde, il déborde dans l'adresse de retour.
Pour comprendre cela, supposons que vous disposez d'un espace tampon qui ne peut contenir que cinq lettres. Donc, si vous remplissez des mots comme "sugar" ou "peace", le flux tampon peut le contenir. Mais quand vous avez un mot comme "authentification", cela va inévitablement déborder. Cela conduit à un bogue ou à un plantage du système. Mais les pirates peuvent exploiter cette vulnérabilité pour lancer une attaque par débordement de la mémoire tampon.
Qu'est-ce qu'une attaque par débordement de tampon et comment ça marche ?
Les attaques par débordement de tampon se produisent lorsque le pirate prend le contrôle de l'adresse de retour ou de l'EIP. Lorsque l'attaquant connaît la taille de la mémoire d'un système, il peut intentionnellement écrire des données dans ce système juste pour le faire déborder. Ensuite, ils s'assurent que l'EIP ou l'adresse de retour est écrite pour pointer vers un programme qui peut leur donner accès au système ou révéler des informations sensibles stockées sur le système.
L'attaquant peut même écrire des données contenant du code malveillant et provoquer un débordement de la mémoire tampon. L'EIP est ensuite écrit pour rediriger le système vers le code malveillant, et il est conçu pour s'exécuter. Ensuite, le pirate prend le contrôle du système.
Il y a cinq étapes principales dans les attaques par débordement de tampon :
- Pointe
- Fuzzing
- Trouver le décalage
- Remplacer l'EIP ou l'adresse de retour
- Exploiter la vulnérabilité
Le piquetage est la première étape. Ici, les pirates trouvent la partie de la mémoire du programme qui est vulnérable aux débordements de tampon. Vient ensuite le fuzzing, qui est similaire au spiking, mais ici, le pirate envoie des caractères au programme pour voir s'il peut être cassé. Une fois réussi, l'attaquant procède à la recherche du décalage, qui correspond à l'endroit où le tampon a débordé. Ceci est fait pour connaître la taille du tampon et l'adresse de retour. Ensuite, le pirate insère un code shell malveillant et contrôle le système.
Quels sont les types d'attaques par débordement de tampon ?
Il existe deux principaux types d'attaques par débordement de tampon: les attaques basées sur la pile et les attaques basées sur le tas.
1. Attaques par débordement de tampon basées sur la pile
Les attaques par débordement de tampon basées sur la pile sont le type le plus populaire d'attaques par débordement de tampon. Ils se produisent lorsque la mémoire de la pile du système est saturée et exploitée. Il est également connu sous le nom d'écrasement de pile.
2. Attaques par débordement de tampon basées sur le tas
Ce type de débordement de pile n'est pas très courant, car il est difficile à implémenter et à exploiter. Il se produit lorsque la mémoire allouée à un programme déborde. En janvier 2021, Google a découvert un dépassement de mémoire tampon basé sur le tas vulnérabilité dans le composant V8 de Chrome.
Comment prévenir les attaques par Buffer Overflow ?
Les attaques par débordement de mémoire tampon peuvent être atténuées à l'aide de protections d'exécution du système d'exploitation, de langages de programmation sécurisés, de la randomisation de la disposition de l'espace d'adressage et de la garantie de mesures de sécurité globales appropriées.
1. Utilisation de la protection d'exécution du système d'exploitation
La protection à l'exécution est également connue sous le nom de vérification des limites du tableau à l'exécution. Cela garantit que chaque exécution de programme respecte l'espace tampon ou la mémoire disponible. Et il vérifie toutes les données écrites dans la mémoire du système. Il est donc difficile pour les pirates d'écraser les données dans le système et d'exploiter la vulnérabilité.
2. Utilisation de langages de programmation sécurisés
Les langages de programmation tels que C et C ++ n'implémentent pas la vérification des limites des tableaux d'exécution car il faut du code supplémentaire pour vérifier chaque programme écrit dans le système et le ralentir. Par conséquent, ils sont plus sensibles aux attaques par débordement de mémoire tampon. L'utilisation de langages plus sécurisés tels que C #, Java et Python est préférable car ils présentent un risque moindre d'attaques par débordement de mémoire tampon.
3. Utiliser la randomisation de la disposition de l'espace d'adressage (ASLR)
Cette mesure de sécurité attribue de manière aléatoire les adresses des programmes et des fonctions dans la mémoire d'un système à différentes régions de données. Cela rend difficile pour un attaquant de naviguer dans les fonctions sensibles de la mémoire.
4. Garantir des politiques de sécurité strictes
Cela implique de maintenir le système à jour régulièrement, de valider toutes les données écrites dans le système et d'attribuer le moins de privilèges aux utilisateurs. Avec les politiques de sécurité appropriées en place, vous ne devriez pas avoir à vous soucier d'une attaque par débordement de la mémoire tampon.
Maintenir votre sécurité est essentiel pour lutter contre les attaques par débordement de tampon
Selon un dicton populaire en matière de sécurité, « tant qu'un système est utilisé par des humains, une vulnérabilité existe », ce qui est vrai et inévitable. Cependant, on peut toujours réduire les risques d'attaque en s'assurant que des mesures de sécurité appropriées sont en place et strictement respectées.
N'oubliez pas que les pirates trouvent constamment de nouvelles façons d'exploiter des vulnérabilités telles que celle-ci. Par conséquent, c'est à vous de garder une longueur d'avance sur eux en gardant un œil sur les dernières avancées dans le domaine de la cybersécurité.