Domanda

Sto facendo un corso al college, dove uno dei laboratori è quello di eseguire exploit di overflow buffer 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 un registro dei programmi/stato di memoria ma poi ritorna alla funzione che hai chiamato, il che significa che il La funzione che hai chiamato è completamente ignaro dell'exploit.

Ho fatto qualche ricerca su questo, e questo tipo di exploit sono usati praticamente ovunque anche adesso, in cose come Correre in casa sul Wii, e il jailbreak senza etere per iOS 4.3.1

La mia domanda è perché questo problema è così difficile da risolvere? È ovvio che questo è uno dei principali exploit usati per hackerare centinaia di cose, ma sembra che sarebbe abbastanza facile da risolvere semplicemente troncando qualsiasi input oltre la lunghezza consentita e semplicemente igienizzando tutti gli input che prendi.

EDIT: Un'altra prospettiva che vorrei risposte da considerare: perché i creatori di C non risolvono questi problemi reimplementando le biblioteche?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top