Warning: Parameter 1 to wp_default_scripts() expected to be a reference, value given in /customers/5/4/c/nesquiikz.com/httpd.www/wp-includes/plugin.php on line 600 Warning: Parameter 1 to wp_default_styles() expected to be a reference, value given in /customers/5/4/c/nesquiikz.com/httpd.www/wp-includes/plugin.php on line 600 Buffer OverFlow | Hacker Informatique Warning: Cannot assign an empty string to a string offset in /customers/5/4/c/nesquiikz.com/httpd.www/wp-includes/class.wp-scripts.php on line 447

Buffer OverFlow

 

Qu’est-ce que le Buffer OverFlow ?

C’est un dépassement de tampon ou débordement de tampon (en anglais, buffer overflow).

C’est un bug qui survient au moment où un processus (programme) tente d’avoir accès à un espace dans la mémoire qui ne lui est pas réservé.

Petit rappel pour comprendre :

Comme on le sait bien, un processus (programme) fait des calculs. Pour faire ses calculs, il a besoin de registres sur lesquels ils fait des opérations entre registres. Par exemples pour calculer 1 + 2, le programme stock dans une case de la mémoire le chiffre 1 et dans une autre case le chiffre 2 puis dans une troisième il met le résultat de l’addition. effectivement, le programme n’a qu’un seul moyen de garder en mémoire les deux chiffres à additionner, c’est de les stocker dans une case mémoire sinon il oubli (oui bon, l’important c’est la pédagogie ^^). Ainsi pour bien fonctionner et que le programme puisse bien faire tous ses calculs et faire les tâches qu’on attende de lui, le programme réserve toute la mémoire du PC (qui est contenu dans la RAM) qui lui est nécessaire pour bien fonctionner. Il est évident que si un programme réserve toute la mémoire cela lui suffira mais bon sa ne sert à rien car si toute la mémoire du PC est utilisé votre écran restera figer.

Explication sur le bug :

Un programme génère ce bug car soit :

  1. il alloue correctement de la mémoire  
  2. il n’alloue pas assez de mémoire

Dans le premier cas, la majorité du temps ce bug survient lorsque le programme parcours manuellement des cases de la mémoire et que sans par erreur il « déborde » c’est-à-dire qu’il tente de lire ou d’écrire dans une zone de la mémoire qu’il ne lui est pas attribuée.  Par exemple lors le programme alloue 4 octets de mémoire (Octet = unité de mesure de la mémoire) mais qu’il parcoure par erreur 5 octets.  Effectivement il parcours 1 octet de mémoire qu’il ne lui est pas alloué (réservé) donc le bug survient. 

Dans le deuxième cas,  le programme n’arrive pas à prévoir l’espace mémoire qu’il lui faut et fini par ne pas en alloué assez. Par exemple lorsque le programme alloue de la mémoire pour stocker un numéro (chiffre entre 0 et 9) mais que par erreur il est amené à écrire un nombre (plusieurs chiffres) dans cette case. Ou tout simplement il alloue 20 octet pour stocker le prénom que va entrer l’utilisateur dans le programme mais que par malchance l’utilisateur rentre trop de données et cela dépassé les 20 octets alloué. Encore une fois le Buffer Overflow survient.

Au moment ou le bug survient, on ne peut pas prévoir la réaction de l’ordinateur. Son comportement devient purement aléatoire et fini en général par faire crasher le programme ou l’ordinateur.

Quelle rapport avec l’attaque du Buffer OverFlow ?

Effectivement cette faille est associé à l’attaque du Buffer OverFlow qui consiste à volontairement tenté de faire exécuter du code malicieux ou de faire crasher un programme par différente technique :

  1. En lui envoyant des données anormalement longues
  2. En insérant du code malicieux lors du débordement
  3. En tentant de déborder et modifier la valeur d’une case mémoire réservée à un autre programme.

 

Démonstration à venir …..

Translate »