Sto facendo un corso al college, dove uno dei laboratori deve eseguire exploit buffer overflow sul codice che ci danno. Questo varia da semplici exploit come la modifica dell'indirizzo di ritorno per una funzione su uno stack per tornare a una funzione diversa, fino al codice che modifica lo stato di un registro / memoria dei programmi 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 viene usato praticamente ovunque ovunque ora, in cose come l' esecuzione di homebrew su Wii e il jailbreak illimitato per iOS 4.3.1
La mia domanda è: perché questo problema è così difficile da risolvere? È ovvio che questo è uno dei principali exploit utilizzati per hackerare centinaia di cose, ma sembra che sarebbe abbastanza facile da risolvere semplicemente troncando qualsiasi input oltre la lunghezza consentita e semplicemente disinfettando tutti gli input che prendi.
EDIT: Un'altra prospettiva che vorrei prendere in considerazione le risposte: perché i creatori di C non risolvono questi problemi reimplementando le librerie?