L'écriture de données tampons est une partie de la routine du fonctionnement de tout programme , et également une source majeure de problèmes potentiels. Lorsqu'un programme tente de mettre plus de données dans un tampon de son programmeur conçu à détenir, le débordement conséquente de données peut corrompre les données du programme. Cela peut mener à des plantages du logiciel ou potentiellement un moyen pour les pirates de détourner le programme et exécuter du code malveillant . Tampons et débordements
Un tampon est une variable tableau conçu pour stocker des données pour le programme à utiliser à un moment plus tard dans son exécution. Cela pourrait être des informations sur un utilisateur tape dans le programme, le contenu d'un fichier que le programme lit , ou n'importe quoi d'autre au programme peuvent avoir besoin d' exécuter . Les tampons sont créés avec une taille spécifique , qui est réservé à la mémoire d'un ordinateur pour stocker les données de la mémoire tampon. Les débordements de tampon se produisent lorsqu'un programme écrit une quantité de données à une mémoire tampon qui dépasse sa taille réelle , provoquant le programme d'écrire des données depuis l'emplacement de la mémoire tampon dans la mémoire de l'ordinateur et dans la mémoire réservée pour d'autres tampons ou des variables.
bloque
un programme se bloque quand il se trouve incapable d'exécuter la tâche qui lui a été codé à effectuer à un moment donné , et son développeur ne prévoit pas de mécanisme pour récupérer d'une telle un échec. Les débordements de tampon peuvent empêcher certains programmes de crash lors du débordement corrompt les données de la variable qui est stockée dans un emplacement de mémoire à proximité. Par exemple, si un débordement d'un tampon de texte peut écrire les caractères du texte sur les numéros enregistrés dans la fente pour carte mémoire d' une variable entière . Lorsque le programme accède à des données de cette variable pour effectuer un calcul , il trouve les caractères de texte au lieu des numéros . Le programme ne peut pas effectuer des calculs mathématiques sur les caractères de texte , de sorte que le programme allait réagir par s'écraser.
Vulnérabilités de sécurité
advertentm surcharges de mémoire tampon peut causer le plantage des programmes , mais les pirates pourraient délibérément forcer une surcharge de la mémoire tampon de compromettre la fonction d'un programme. Par exemple , l' emplacement de mémoire d'un tampon pourrait être à proximité de l' emplacement de mémoire qui contient une commande particulière du programme s'exécute. Un pirate peut découvrir la taille de la mémoire tampon, et la distance de l'emplacement de mémoire de la commande à partir de la fin de la mémoire tampon. Il pourrait alors forcer un dépassement de mémoire tampon qui serait écraser les données entre la mémoire et l'emplacement de mémoire de la commande , puis écraser la fente de mémoire de la commande pour remplacer la commande avec l'un de sa propre conception. Lorsque le programme appelle la fente de mémoire de commande et exécute son contenu , il serait exécute le code du pirate au lieu de celui du programmateur destiné .
Prévenir les débordements de buffer
programmeurs peut empêcher les dépassements de tampon en instituant des mécanismes de sécurité afin de s'assurer que le programme ne cherche pas à écrire plus de données dans une mémoire tampon qu'il a conçu pour tenir. Ceux-ci peuvent inclure la vérification de la taille des utilisateurs de données, on essaie de mettre en elle , à travers tapant ou en sélectionnant un fichier d'entrée , afin de s'assurer qu'elle ne dépasse pas la taille de la mémoire tampon. Les programmeurs doivent aussi tenter de minimiser les possibilités que les utilisateurs doivent écrire des données directement dans une mémoire tampon , comme chaque entrée qui écrit directement dans une mémoire tampon est un vecteur potentiel d' une attaque de surcharge de la mémoire tampon .