« Attaque par Buffer Overflow » : différence entre les versions

De Wiki du LAMA (UMR 5127)
Aller à la navigation Aller à la recherche
Ligne 16 : Ligne 16 :
== Rappels sur la pile d'exécution ==
== Rappels sur la pile d'exécution ==


On peut représenter la structure de la pile d'exécution d'un processus, ainsi que le cadre de la pile, par les schémas suivants :
On peut représenter un processus ainsi que sa pile d'exécution par les schémas suivants :


[[Fichier:Pile execution.PNG]] [[Fichier:Cadre pile.PNG]]
[[Fichier:Pile execution.PNG]] [[Fichier:Cadre pile.PNG]]

Les zones '''text''' et '''data''' contiennent respectivement le code source du programme et ses données statiques. Le '''tas''' est la zone dans laquelle sont stockées toutes les données allouées dynamiquement.


= Exemple d'attaque =
= Exemple d'attaque =

Version du 12 novembre 2018 à 21:45

Auteurs : Olivier STHIOUL et Ludovic MILLON

Introduction

L'attaque par Buffer Overflow (dépassement de tampon mémoire) est l'exploitation d'une faille de mémoire, durant laquelle l'écriture en mémoire du buffer dépasse son espace mémoire alloué. Le processus subit alors une modification des informations nécessaires au fonctionnement du programme. Ces attaques ciblent le plus souvent des sites web, des applications de bureau ou même le système d'exploitation du serveur qui héberge le site web.

La plupart des failles se trouvent (pour un site web), dans les modules installés sur le serveur comme mod_php ou mod_ssl. Il y a par exemple la possibilité de désactiver des fonctions php dans son fichier de configuration. Par défaut, certaines de ces fonctions sont désactivées car elles ont été reconnues comme comportant des failles de sécurités.

L'attaque a pour objectif de faire crasher le programme ou l'application et d'exploiter une faille, en remplaçant, par exemple, le code source du programme. Un de ses avantages est qu'il n'y a pas besoin d'avoir accès à la machine victime.

Ce type d'attaque nécessite des compétences pointilleuses en informatique et particulièrement en sécurité informatique, et en code assembleur.

Principe de l'attaque

Rappels sur la pile d'exécution

On peut représenter un processus ainsi que sa pile d'exécution par les schémas suivants :

Pile execution.PNG Cadre pile.PNG

Les zones text et data contiennent respectivement le code source du programme et ses données statiques. Le tas est la zone dans laquelle sont stockées toutes les données allouées dynamiquement.

Exemple d'attaque

Solutions pour éviter l'attaque

plusieurs solutions s'offrent au développeurs:

  • utiliser des langages haut-niveau qui intègre une gestion complète de la mémoire. Ex: Java, Cyclone...
  • utiliser des librairies et des fonctions sécurisés (fonction strncpy()..., librairie Libsafe)
  • tester son code avec des logiciels spécialisé comme Qaudit ou Flawfinder
  • Appliquer rapidement les correctifs
  • CerberHost (https://www.youtube.com/watch?v=q1HODJaMY5M)

Sources

https://fr.wikipedia.org/wiki/D%C3%A9passement_de_tampon

https://www.securiteinfo.com/attaques/hacking/buff.shtml

http://www.student.montefiore.ulg.ac.be/~blaugraud/node2.html

https://www.nbs-system.com/blog/cerberhost-les-attaques-de-type-buffer-overflow/

https://zestedesavoir.com/articles/143/exploitez-votre-premier-stack-based-overflow/

https://www.consultingit.fr/fr/buffer-overflow-attack-example-website-attaques-systemes-par-buffer-overflow-stack-overflow

https://web.maths.unsw.edu.au/~lafaye/CCM/attaques/buffer-overflow.htm

http://chamilo2.grenet.fr/inp/courses/ENSIMAG3MM1LDB/document/asm_fonctions.pdf