Je fais un cours à l'université, où l'un des laboratoires est d'effectuer des exploits de débordement de tampon sur le code qu'ils nous donnent. Cela va de simples exploits comme changer l'adresse de retour d'une fonction sur une pile pour revenir à une fonction différente, jusqu'au code qui modifie un registre de programmes / un état de mémoire mais revient ensuite à la fonction que vous avez appelée, ce qui signifie que le la fonction que vous avez appelée est complètement inconsciente de l'exploit.
J'ai fait des recherches à ce sujet, et ces types d'exploits sont utilisés à peu près partout, même maintenant, dans des choses comme l' exécution de homebrew sur la Wii et le jailbreak sans connexion pour iOS 4.3.1
Ma question est pourquoi ce problème est-il si difficile à résoudre? Il est évident que c'est un exploit majeur utilisé pour pirater des centaines de choses, mais il semble qu'il serait assez facile à corriger en tronquant simplement toute entrée au-delà de la longueur autorisée et en purifiant simplement toutes les entrées que vous prenez.
EDIT: Une autre perspective que j'aimerais que les réponses prennent en compte - pourquoi les créateurs de C ne résolvent-ils pas ces problèmes en réimplémentant les bibliothèques?