Robię kurs na studiach, gdzie jednym z laboratoriów jest przeprowadzanie exploitów związanych z przepełnieniem buforu na dostarczanym przez nas kodzie. Dotyczy to zarówno prostych exploitów, jak zmiana adresu zwrotnego funkcji na stosie, aby powrócić do innej funkcji, aż do kodu zmieniającego rejestr / stan pamięci programów, ale następnie powraca do funkcji, którą wywołałeś, co oznacza, że wywołana funkcja jest całkowicie nieświadoma tego exploita.
Zrobiłem trochę badań nad tym, a tego rodzaju exploity są używane prawie wszędzie, nawet teraz, w takich rzeczach jak uruchamianie homebrew na Wii i niezwiązany jailbreak dla iOS 4.3.1
Moje pytanie brzmi: dlaczego tak trudno jest rozwiązać ten problem? To oczywiste, że jest to jeden z głównych exploitów używanych do hakowania setek rzeczy, ale wydaje się, że byłoby to dość łatwe do naprawienia po prostu obcinając dane wejściowe poza dozwoloną długość i po prostu odkażając wszystkie dane, które pobierasz.
EDYCJA: Kolejna perspektywa, którą chciałbym wziąć pod uwagę odpowiedzi - dlaczego twórcy C nie naprawiają tych problemów poprzez ponowne wdrożenie bibliotek?