Sto facendo un corso al college, dove uno dei laboratori è quello di eseguire exploit di buffer overflow sul codice che ci danno. Questo va da semplici exploit come cambiare l'indirizzo di ritorno di una funzione su uno stack per tornare a una funzione diversa, fino al codice che cambia uno stato di registro / memoria di un programma ma poi ritorna alla funzione che hai chiamato, il che significa che il la funzione che hai chiamato è completamente ignara dell'exploit.
Ho fatto qualche ricerca su questo, e questo tipo di exploit sono usati praticamente ovunque, anche ora, in cose come che eseguono homebrew sul Wii e il jailbreak untethered per iOS 4.3.1
La mia domanda è: perché questo problema è così difficile da risolvere? È ovvio che questo è uno dei principali exploit usato per hackerare centinaia di cose, ma sembra che sarebbe piuttosto facile da risolvere semplicemente troncando qualsiasi input oltre la lunghezza consentita e semplicemente disinfettando tutti gli input che prendi.
EDIT: un'altra prospettiva che mi piacerebbe che le risposte prendessero in considerazione: perché i creatori di C non risolvono questi problemi reimplementando le librerie?