Stack Guard vs Stack Shield

1

Vorrei sapere perché oggigiorno Stack Guard è usato ovunque (esempio: ProPolice in GCC, / GS in Visual Studio), invece di Stack Shield.

Entrambi gli approcci (ad esempio, Stack Guard e Stack Shield) forniscono un livello di sicurezza uguale.

Eventuali vantaggi specifici di Stack Guard over Stack Shield?

    
posta Jaydeep 20.10.2013 - 14:47
fonte

1 risposta

1

Queste tecnologie sono simili in quanto sono le protezioni del compilatore. Per ottenere la protezione, è necessario ricompilare un'applicazione, ma il codice sorgente non deve essere modificato (almeno, a meno che l'app non funzioni in modo funky, come il codice di modifica automatica)

Stack Guard si basa su un valore "canarino" che viene messo in pila con ogni chiamata di funzione. Alla fine della funzione, il canarino è controllato. Se si è verificato un overflow, questo corromperà il canarino e verrà rilevato.

Stack Shield si basa sulla copia dell'indirizzo di ritorno in un'area sicura e sulla verifica dell'indirizzo di ritorno alla fine della funzione. Se l'indirizzo di ritorno viene sovrascritto, questo non corrisponderà più e l'attacco verrà rilevato.

Poiché funzionano in modo diverso, hanno proprietà di sicurezza leggermente diverse. In particolare, Stack Guard è in grado di rilevare la corruzione di cose diverse dall'indirizzo di ritorno. Ed è per questo che Stack Guard è più ampiamente utilizzato.

Questo documento è interessante: link

    
risposta data 20.10.2013 - 15:50
fonte

Leggi altre domande sui tag