Come funziona lo stack del compilatore gcc guard per l'overflow dello stack?

4

Quando compiliamo il programma c con gcc, dobbiamo inserire l'opzione "-z execstack" per abilitare l'attacco di overflow dello stack. La domanda che voglio porre è come gcc lo implementa. Senza questa opzione, in che modo gcc protegge lo stack? Per favore, spiegami in dettaglio se possibile.

    
posta popo 25.05.2018 - 14:30
fonte

1 risposta

5

In un classico attacco di overflow dello stack, l'attaccante riesce a posizionare il proprio codice (istruzioni per il processore) nello stack facendo traboccare alcune strutture di dati basate sullo stack con contenuti controllati dagli hacker. Ora, l'autore dell'attacco deve avere questo contenuto nello stack da prendere come istruzioni dal processore e farlo eseguire. Ma il processore eseguirà solo il codice dalle pagine di memoria contrassegnate come eseguibili. Solo i sistemi operativi e i compilatori moderni contrassegneranno le pagine dello stack come non eseguibili al fine di evitare tali overflow dello stack. L'opzione -z execstack disabilita questa protezione.

    
risposta data 25.05.2018 - 15:36
fonte

Leggi altre domande sui tag