Bien qu’il soit très ancien, le buffer overflow est tout de même bien répandu jusqu’à ce jour. Il s’agit d’une brèche causée par le manque de rigueur de certains programmeurs dans l’exercice de leur fonction. Il faut noter que cette anomalie a été évoquée pour la première fois en 1996 lors de la publication de la 49e édition du célèbre Phrack. Vous souhaitez en savoir plus ? Découvrez l’essentiel à savoir sur le sujet dans cet article.
Qu’est-ce qu’un buffer overflow ?
Avant d’en dire davantage sur le sujet, il convient tout d’abord de donner une brève explication du concept buffer overflow. Ainsi, ce concept peut être défini comme une anomalie ou du moins une vulnérabilité occasionnée par un encombrement lors de la copie des données dans un buffer. Pour faire plus simple, ce terme est utilisé lorsque la capacité des informations qui sont transmises par le logiciel est supérieure à celle de la mémoire elle-même. Dans ces cas-ci, il est fort probable que vous assistiez à une destruction des données se trouvant dans le secteur de la mémoire adjacente.
Exemple concret
Le buffer overflow, c’est comme si vous essayez de remplir une bouteille de lait de 10 pouces avec une quantité de lait de 13 pouces. Ou encore que vous essayiez d’emmagasiner une marchandise de 15 tonnes dans un conteneur qui ne peut en recevoir que 10.
Il faut par ailleurs souligner qu’un tel procédé peut avoir des conséquences graves. Il est en effet possible que cette vulnérabilité soit exploitée par des attaquants pour faire des modifications dans l’optique de compromettre ou prendre le contrôle des programmes de l’ordinateur.
Comment cette vulnérabilité est-elle exploitée ?
Il faut dire qu’il est assez facile d’exploiter cette vulnérabilité. Pour ce faire, il suffirait que l’attaquant conçoive une entrée et l’introduise dans un programme. Cependant, il faut préciser que ledit programme aura pour objectif principal d’essayer d’emmagasiner l’entrée conçue dans une mémoire tampon. Étant donné qu’elle ne dispose pas d’un espace suffisant, le programme détruira des sections de la mémoire qui est connectée à celle tampon remplaçant ainsi l’ancien chiffrement par le nouveau exécutable. Cela permettra donc une modification radicale du mode de fonctionnement du programme.
Les langages informatiques les plus vulnérables aux attaques
Quand il s’agit d’attaque ou de prise de contrôle des programmes, certains langages informatiques sont plus vulnérables que d’autres. Toutefois, parmi ceux-ci, il faut souligner que les types C et C++ présentent une plus grande vulnérabilité. En effet, ils sont vulnérables parce qu’ils n’intègrent aucune protection. Aucun système anti destruction de chiffrement de la mémoire n’est mis en place. Par ailleurs, il faut ajouter que de nombreux systèmes d’exploitation en sont d’ailleurs dotés. Windows et Linux en sont quelques exemples.
Quelques exemples d’attaques
Au nombre des différents types d’attaques, vous avez ceux occasionnés par le débordement d’entier et les Unicode overflow. La particularité avec ces deux types, c’est que la première attaque fait intervenir une opération arithmétique alors qu’avec la deuxième il faudra insérer des caractères Unicode dans une entrée.