Continuer vers le site principal


Accueil Attaque par buffer overflow

Attaque par buffer overflow

(également débordement de mémoire tampon, buffer overflow, buffer overrun, exploit de dépassement de mémoire tampon)

Définition d'une attaque par dépassement de mémoire tampon

Une attaque par débordement de mémoire tampon (buffer overflow en anglais) est un exploit de sécurité dans lequel l'attaquant surcharge délibérément la mémoire tampon d'un programme (stockage temporaire utilisé lors du transit de données) afin d'écraser les emplacements de mémoire adjacents. Cela peut modifier le chemin d'exécution de l'application, ce qui peut endommager des fichiers ou exposer des données sensibles. Dans certains cas, les attaquants peuvent même insérer des scripts malveillants sophistiqués dans le code exécutable d'un programme.

Les attaques par dépassement de mémoire tampon sont le type d'attaque DDoS le plus courant. Elles touchent presque toutes les applications et tous les serveurs web, bien que certains langages de programmation soient plus vulnérables que d'autres. En particulier, PERL, Java, JavaScript et C# disposent de protections intégrées contre les attaques par dépassement de mémoire tampon.

Exemples réels d'attaques par dépassement de mémoire tampon

1988: Le ver Morris a accidentellement fait tomber ARPANET (le précurseur de l'internet) à la suite d'une attaque par débordement de mémoire tampon.

2019: Des pirates informatiques ont exploité des vulnérabilités du protocole de voix sur IP pour mener à bien une attaque par débordement de mémoire tampon sur WhatsApp et injecter des logiciels malveillants dans les appareils de nombreux utilisateurs.

Arrêter une attaque par dépassement de mémoire tampon

  • Évitez d'écrire du code en C/C++, car ces langages de programmation n'offrent pas de protection contre l'accès ou l'écrasement de données dans leur mémoire. Utilisez plutôt PERL, Java, JavaScript ou C#.
  • Utilisez le contrôle des limites pour les tampons et appliquez-le au moment de l'exécution.
  • Lors de l'écriture du code, évitez les fonctions de la bibliothèque standard qui n'ont pas fait l'objet d'un contrôle des limites.
  • Testez le code pour détecter les dépassements de mémoire tampon et le cas échéant, corrigez les bugs qui les provoquent.

Pour en savoir plus