Ich mache einen College-Kurs, in dem eine der Übungen darin besteht, Pufferüberlauf-Exploits für Code durchzuführen, den sie uns geben. Dies reicht von einfachen Exploits wie dem Ändern der Rücksprungadresse für eine Funktion auf einem Stack, um zu einer anderen Funktion zurückzukehren, bis hin zu Code, der den Status eines Programmregisters / -speichers ändert, aber dann zu der von Ihnen aufgerufenen Funktion zurückkehrt Die von Ihnen aufgerufene Funktion kennt den Exploit nicht.
Ich habe einige Nachforschungen angestellt, und diese Arten von Exploits werden auch heute noch fast überall verwendet, zum Beispiel bei der Ausführung von Homebrew auf der Wii und dem Jailbreak ohne Tethering für iOS 4.3.1
Meine Frage ist, warum dieses Problem so schwer zu beheben ist? Es ist offensichtlich, dass dies ein wichtiger Exploit ist, der verwendet wird, um Hunderte von Dingen zu hacken, aber es scheint ziemlich einfach zu sein, Eingaben über die zulässige Länge hinaus zu kürzen und alle von Ihnen aufgenommenen Eingaben zu bereinigen.
BEARBEITEN: Eine andere Perspektive, über die ich Antworten haben möchte - warum beheben die Entwickler von C diese Probleme nicht, indem sie die Bibliotheken neu implementieren?