? Dépassements de tampon et les bogues de chaîne de format sont deux méthodes à partir de laquelle les utilisateurs peuvent acquérir le contrôle d'un programme. On les retrouve généralement dans les langues de niveau inférieur tels que C ou C + + , à la fois s'appuyer sur la capacité d'un pirate de manipuler entrée de l'utilisateur de faire un programme effectuer d'autres moyens que il était envisagé de . Les saturations de tampon reposent sur un manque de mesures de sécurité autour de l'entrée d'utilisateur , tandis que les bogues de chaîne de format se produisent dans les fonctions d'entrée /sortie effective d'un langage de programmation. Comprendre comment chacun fonctionne , il faut comprendre pourquoi ils se produisent dans le code. Buffer Overrun
Un débordement de tampon peut survenir lors de l'exécution du programme en une structure de données de la mémoire tampon destiné à gérer les entrées de l'utilisateur est donné trop de données à gérer. Par exemple , un programmeur peut déclarer une structure matricielle contenant des caractères à prendre en utilisateur les données de connexion . Le programmeur peut choisir de limiter la taille de la matrice de 25 caractères. Si le programmeur ne met pas toutes les garanties existantes , l'utilisateur peut entrer une quantité arbitraire de données comme nom de connexion . Lorsque l'utilisateur fait cela, les caractères supplémentaires au-delà de 25 dépassement de l'espace mémoire des données de tableau et de corruption dans des emplacements mémoire adjacents. C'est ce qu'on appelle un dépassement de mémoire tampon .
Tampons mémoire et de la sécurité
pirates peuvent profiter des dépassements de mémoire tampon pour modifier le chemin d'exécution du programme. Si un pirate sait comment fonctionne un programme , alors elle sait aussi quels types de données sont à proximité de la baie de caractère. Dans la programmation C , des variables et des références de fonction sont stockés en mémoire. Si une variable ou une fonction référence réside près de la baie, un pirate peut envahir le tableau de manière à changer la valeur d'une variable , de sorte qu'il permettra Connectez-vous avec de fausses références . Le pirate peut également modifier une fonction de sorte qu'il exécute le code malveillant , et permet au pirate dans le système.
Format Strings
" chaîne de format " représente un argument particulier fourni des fonctions d'entrée et de sortie en C. Par exemple, la fonction « printf () » prend comme premier argument une chaîne de format qui détaille la manière dont le résultat doit être à l'utilisateur. Suite à cela, la fonction printf () prend une liste variable d'arguments représentant des données de sortie , tel que formaté par la chaîne de format . L'exemple suivant explique en détail comment une chaîne de format fonctionne dans le contexte, avec une chaîne de format contenant un caractère de format ( "% d" ) ce qui signifie que l' argument entier va remplacer ce caractère dans la sortie:
printf (" Ce est la chaîne de format , suivi par un nombre entier d'imprimer % d ", 56);
Format Strings et de la sécurité
les questions de sécurité de chaîne de format se produisent quand un utilisateur arrive à entrée une chaîne de format contenant le caractère de formatage pas prévu par le programmeur. Lorsqu'un ) fonction printf ( est appelée, la chaîne de format et les arguments suivants il sont poussés dans la mémoire, et la fonction « marche» à travers la mémoire , en remplaçant tous les caractères de mise en forme avec des valeurs dans des emplacements mémoire correspondants. Si un pirate inserts formatage des caractères dans une chaîne , elle peut peut-être lire les valeurs de données situées n'importe où à proximité de la pile - et si elle peut lire la pile , elle sait où et comment modifier des données et manipuler l'exécution du programme
.