Pile écrasant

Définition - Que signifie Stack Smashing?

Le smashing de pile est une forme de vulnérabilité où la pile d'une application informatique ou d'un système d'exploitation est forcée de déborder. Cela peut conduire à subvertir le programme / système et à le planter.

Une pile, un circuit premier entré dernier sorti, est une forme de tampon contenant les résultats intermédiaires des opérations. Pour simplifier, stack smashing mettant plus de données dans une pile que sa capacité de stockage. Des hackers expérimentés peuvent délibérément introduire des données excessives dans la pile. Les données excessives peuvent être stockées dans d'autres variables de pile, y compris l'adresse de retour de la fonction. Lorsque la fonction revient, elle passe au code malveillant sur la pile, ce qui peut corrompre tout le système. Les données adjacentes sur la pile sont affectées et obligent le programme à se bloquer.

Definir Tech explique Stack Smashing

Si le programme affecté par l'écrasement de pile accepte des données de réseaux non approuvés et s'exécute avec des privilèges spéciaux, il s'agit d'un cas de vulnérabilité de sécurité. Si le tampon contient des données fournies par un utilisateur non approuvé, la pile peut être corrompue en injectant du code exécutable dans le programme, obtenant ainsi un accès non autorisé à un ordinateur. Un attaquant peut également écraser les informations de flux de contrôle stockées dans la pile.

Alors que l'écrasement de pile est devenu une vulnérabilité très sérieuse, certaines technologies sont mises en œuvre pour surmonter le désastre d'écrasement de pile. La protection contre le débordement de la mémoire tampon de la pile modifie l'organisation des données dans le cadre de pile d'un appel de fonction pour inclure des valeurs Canary. Ces valeurs lorsqu'elles sont détruites indiquent qu'un tampon le précédant en mémoire a été débordé. Les valeurs Canary surveillent les débordements de tampon et sont placées entre les données de contrôle et la mémoire tampon de la pile. Cela garantit qu'un débordement de tampon corrompt le canari en premier. Un échec de vérification des données Canary signifie un débordement dans la pile. Les trois types de canari sont Random, Terminator et Random XOR.

Le canari de terminateur est basé sur le fait que l'attaque par débordement de tampon de pile dépend des opérations de chaîne se terminant aux terminateurs. Les canaris aléatoires sont générés aléatoirement à partir d'un démon de collecte d'entropie, ce qui empêche les attaquants de connaître les valeurs. Des canaris aléatoires sont générés lors de l'initialisation du programme et stockés dans des variables globales. Les canaris XOR aléatoires sont des porteurs aléatoires qui sont brouillés XOR à l'aide de données de contrôle. Il est similaire aux canaris aléatoires sauf que la «méthode de lecture à partir de la pile» pour obtenir le canari est complexe. Le pirate a besoin du canari, de l'algorithme et des données de contrôle pour produire le canari original. Ils protègent contre les attaques impliquant le débordement de tampons dans une structure en pointeurs pour changer le pointeur pour pointer sur une donnée de contrôle.