Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

Les attaques par saturation mémoire tampon (Buffer Overflow)

Le dépassement de mémoire tampon (Buffer Overflow ou Buffer Overrun), est un état de l’ordinateur dans lequel une application tente de stocker plus de données dans la mémoire tampon que la taille de la mémoire.
Cela conduit à stocker des données dans un stockage adjacent, ce qui peut parfois écraser les données existantes, entraînant une perte de données potentielle et parfois une panne du système également.
C’est une erreur de programmation courante que la plupart des développeurs commettent sans le savoir.
Les pirates l’exploitent le plus souvent pour accéder à des données non sollicitées.

Ce tutoriel vous explique ce qu’est le dépassement de mémoire tampon et comment les attaques l’exploitent dans des attaques par sature de mémoire tampon.

Les attaques par saturation mémoire tampon (Buffer Overflow)

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

Tout processus et applications utilisent la mémoire RAM afin de stocker des données nécessaires à son fonctionnement.
Ces données sont lues par le processeur pour effectuer les calculs nécessaires.

Un tampon mémoire (buffer en anglais) est comme un cache, c’est-à-dire une zone de données de la mémoire RAM réservée au stockage temporaire.
On y stocke des données temporaires, notamment entre deux processus ou matériels ne travaillant pas au même rythme.

La mémoire tampon est utilisée pour stocker les données avant qu’elles ne soient utilisées. Les tampons sont couramment utilisés sur les disques durs pour améliorer l’efficacité de l’accès aux données.
Par exemple, les images sont envoyées dans le tampon avant d’être affichées sur l’écran de la carte vidéo (également appelé tampon d’écran).
Ou encore, les tampons sont fréquemment utilisés dans la diffusion de vidéos 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 à partir de cette mémoire. Ainsi, de légères baisses de la vitesse de connexion ou des interruptions de service rapides n’affectent pas les performances du flux vidéo.

Certains programmes utilisent le terme tampon pour désigner l’espace réservé en mémoire pour les informations d’un fichier sur lequel vous travaillez. En fait, vous pouvez créer un nouveau tampon et y placer des informations avant de les enregistrer sur le disque en tant que fichier, mais l’idée est que le tampon représente une collection d’informations en mémoire qui est traitée comme une unité.

Les imprimantes, les modems et d’autres périphériques peuvent également avoir des tampons.
Si votre imprimante n’a pas de mémoire tampon, votre ordinateur ne peut lui envoyer qu’une petite quantité d’informations à la fois, autant que l’imprimante peut en produire immédiatement. Avec une mémoire tampon, l’ordinateur peut envoyer un document à pleine vitesse, au moins jusqu’à ce que la mémoire tampon se remplisse. Les informations attendent dans la mémoire tampon jusqu’à ce que l’imprimante soit prête à les imprimer, mais pendant ce temps, vous pouvez retourner travailler sur votre ordinateur.

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

Un dépassement de tampon ou débordement de tampon (en anglais buffer Overflow) est un bug qui se produit lorsqu’un processus écrit dans hors de la zone de la mémoire tampon qui lui ait allouée.

Par exemple, supposons une application Web qui demande aux utilisateurs de saisir leur nom d’utilisateur lorsqu’ils veulent accéder à l’application. Lors du développement de l’application Web, le développeur alloue une capacité tampon de 8 octets pour le stockage du nom d’utilisateur saisi par les utilisateurs. Après tout, il ne s’attend pas à ce que les utilisateurs saisissent un nom d’utilisateur de plus de 8 caractères. Or, un utilisateur décide de saisir 10 chaînes répétées de la lettre “J”, au lieu du nom d’utilisateur Jane. À sa grande surprise, l’application Web se bloque et refuse d’accepter les nouvelles connexions de tous les autres utilisateurs, ce qui entraîne un déni de service.

Exemple de Buffer Overflow

Lorsque le bug se produit, le comportement de l’ordinateur devient imprévisible. Il en résulte souvent un blocage du programme, voire de tout le système.
Sur Windows, il peut en résulter une erreur d’application (APPCrash) et sur Linux un SegFault.
Windows peut aussi afficher le message : le système a détecté la saturation de la mémoire tampon.

Qu’est-ce qu’une attaque par saturation de mémoire tampon

Les débordements de tampon peuvent être exploités par des attaquants pour corrompre des logiciels.
De nombreuses cyberattaques exploitent les vulnérabilités de dépassement de tampon pour compromettre ou prendre le contrôle d’applications ou de systèmes cibles.

Une attaque par débordement de tampon implique généralement la violation des langages de programmation et l’écrasement des limites des tampons sur lesquels ils existent.
La plupart des débordements de tampon sont causés par la combinaison de la manipulation de la mémoire et d’hypothèses erronées concernant la composition ou la taille des données.

  • Les débordements de tampon (Stack-based buffer overflows) basés sur la pile sont plus courants et exploitent la mémoire de la pile qui n’existe que pendant l’exécution d’une fonction.
  • Les attaques basées sur le tas (Heap-based attacks) sont plus difficiles à réaliser et consistent à inonder l’espace mémoire alloué à un programme au-delà de la mémoire utilisée pour les opérations d’exécution en cours.

Les attaquants exploitent les problèmes de dépassement de tampon en tentant d’écraser la mémoire d’une application afin de modifier le chemin d’exécution du programme, déclenchant ainsi une réponse qui expose des données privées. Si les attaquants connaissent la disposition de la mémoire d’un programme, ils peuvent envoyer intentionnellement de nouvelles instructions à l’application en injectant du code supplémentaire pour obtenir un accès non autorisé à l’application.

Le dépassement de tampon est la forme la plus courante d’attaque DoS. Dans ce type d’exploitation, l’adversaire dirige plus de trafic vers une adresse réseau que le système n’est capable de gérer. La machine consomme alors tous les tampons disponibles, c’est-à-dire les zones de stockage en mémoire qui contiennent temporairement les données pendant leur transfert sur le réseau. Un dépassement de tampon se produit lorsque le volume de données dépasse toute la bande passante disponible, y compris l’espace disque, la mémoire ou le processeur, ce qui entraîne un ralentissement des performances et des pannes du système.

Exemple d’attaque par saturation de la mémoire tampon

Le vers Morris Worm en 1988 : Probablement l’exemple le plus célèbre de dépassement de tampon, l’attaque du ver Morris était l’une des premières cyberattaques complexes utilisant un logiciel malveillant (un ver). Le ver a d’abord attaqué la mémoire tampon et le chaos qui en a résulté a involontairement fait tomber ARPANET (le réseau qui est devenu la base d’Internet) via un déni de service (DoS). L’attaque n’a pas nécessité d’interaction ou d’exécution humaine, car elle s’est auto-répliquée sur un système hôte.

SQL Slammer : SQL Slammer est un ver informatique de 2003 qui a exploité un bogue de dépassement de tampon dans les produits de base de données SQL Server et Desktop Engine de Microsoft.
SQL Slammer a provoqué un déni de service sur certains hôtes Internet, ISP et ATM et a considérablement ralenti le trafic Internet général. Il s’est propagé rapidement, infectant 90 % des hôtes vulnérables (environ 75 000 victimes) en 10 minutes, selon Silicon Defence.

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épassement de tampon dans le logiciel SSL.
La cause première est exactement la même que celle du dépassement de tampon : l’absence de vérification des limites. Bien qu’il soit difficile d’évaluer le coût total de Heartbleed, plusieurs attaques et violations de données concernant notamment des produits VPN au cours de cette période étaient liées à Heartbleed.

Attaque de WhatsApp en 2019 : L’attaque par dépassement de tampon la plus prolifique de l’histoire récente. L’attaque qui a exploité un bug de dépassement de tampon est arrivée à l’application de messagerie WhatsApp, ostensiblement sécurisée. Les utilisateurs de l’application ont été perturbés par la nouvelle puisque WhatsApp offre un chiffrement de bout en bout et promet des conversations sécurisées.
Les attaquants ont utilisé les protocoles de voix sur Internet et leurs vulnérabilités. Ils ont réussi à faire déborder la mémoire tampon de l’application, puis à l’utiliser comme une passerelle pour injecter des logiciels malveillants dans les appareils des utilisateurs. Il suffisait aux pirates d’appeler l’utilisateur, qui n’avait même pas besoin de décrocher son téléphone pour que le malware soit installé. Ces appels n’étaient pas non plus visibles dans le journal des appels, de sorte que certains utilisateurs ignoraient totalement que leurs appareils étaient infectés. Le logiciel malveillant permettait aux pirates d’accéder aux messages, aux microphones et aux caméras des utilisateurs.

Les protections contre les attaques par saturation de mémoire tampon

Les débordements de tampon sont généralement dus à des erreurs de développement logiciel.
Par exemple :

  • Le stockage nécessaire à l’application peut être sous-estimé par les développeurs et les programmeurs
  • Les programmeurs peuvent surestimer la quantité de données déjà présentes dans un tampon et le faire déborder
  • Les données sont envoyées dans le mauvais tampon
  • L’utilisation des langages de programmation C/C++, qui sont plus sensibles aux débordements de tampon et ne disposent pas de protection intégrée
  • le fait de ne pas tester régulièrement si les données téléchargées se trouvent dans les limites du tampon

Voici les principales protections intégrées dans les langages ou système d’exploitation pour prévenir de ce type d’attaque.

Protection dans le langage informatique

Le moyen le plus fiable de protéger les applications et les dispositifs contre les attaques par débordement de tampon est de les protéger au niveau du langage et d’écrire le code en Perl ou en JavaScript. Un autre moyen consiste à effectuer des contrôles de limites pour s’assurer que les données contenues dans le tampon sont dans ses limites

Address space layout randomization

Address space layout randomization (ASLR) est une fonction de sécurité informatique qui consiste à disposer de manière aléatoire les positions des zones de données clés, comprenant généralement la base de l’exécutable et la position des bibliothèques, du tas et de la pile, dans l’espace d’adressage d’un processus.

La randomisation des adresses de mémoire virtuelle auxquelles les fonctions et les variables peuvent être trouvées peut rendre l’exploitation d’un dépassement de tampon plus difficile, mais pas impossible. Elle oblige également l’attaquant à adapter la tentative d’exploitation au système individuel, ce qui déjoue les tentatives des vers Internet. Une méthode similaire mais moins efficace consiste à rebaser les processus et les bibliothèques dans l’espace d’adressage virtuel.

ASLR est présent dans la plupart des OS comme Android, macOS, FreeBSD, OpenBSD, Solaris.
Cette protection est disponible dans Linux depuis le noyau version 2.6.12, publié en Juin 2005.
Enfin Microsoft a ajouté cette protection à partir de Windows Vista en Janvier 2007.

Deep packet inspection (DPI)

L’utilisation de l’inspection approfondie des paquets (IAP) ou deep packet inspection (DPI) permet de détecter les tentatives très simples d’exploitation à distance des dépassements de mémoire tampon grâce à des signatures d’attaque et à une heuristique.
Celles-ci sont capables de bloquer les paquets qui ont la signature d’une attaque connue, ou si une longue série d’instructions de non-opération (connues sous le nom de NOP-sled) est détectée, celles-ci étaient autrefois utilisées lorsque l’emplacement de la charge utile de l’exploit est légèrement variable.

Executable space protection

La protection de l’espace exécutable est une approche de la protection contre le débordement de la mémoire tampon qui empêche l’exécution de code sur la pile ou le tas.

Les systèmes MacOS et BSD l’intègrent à travers les solutions suivantes : PaX, Exec Shield, Openwall.
Microsoft Windows supporte executable space protection à travers la protection nommée Data Execution Prevention.

L’article Les attaques par saturation mémoire tampon (Buffer Overflow) est apparu en premier sur malekal.com.

Enregistrer un commentaire

0 Commentaires