In che modo il cookie dello stack protegge l'indirizzo di ritorno da sovrascrivere [duplicato]

2

/GS compiler option Micorsoft developed added an extra cookie before the return address and before returning the cookie is checked, if it is intact then return address is safe

perché mai questa ipotesi è valida? A mio avviso, ciò rende le cose degli hacker un po 'più difficili da mantenere mantenendo intatto il cookie.

    
posta zinking 19.12.2013 - 15:32
fonte

2 risposte

5

Il cookie stack (noto anche come "canary") non impedisce che l'indirizzo di ritorno venga sovrascritto, ma aumenta le possibilità che il codice noti la sovrascrittura prima dopo l'indirizzo di ritorno sovrascritto.

Questa è euristica: l'idea è che la maggior parte dei buffer overflow che finiscono con la sovrascrittura dell'indirizzo di ritorno procedono sequenzialmente da un buffer di stack, uno dall'altra parte dello slot dei cookie, quindi anche sovrascrivere il cookie. "Mantenere intatto il cookie" richiede che l'attaccante possa in qualche modo effettuare un "overflow di salto" (succede, ma raramente) o può ottenere il valore del cookie in modo che possa sovrascrivere il valore del cookie con se stesso. Ottenere il valore del cookie è difficile poiché viene normalmente scelto in modo casuale al momento dell'esecuzione (i dettagli variano a seconda della versione del sistema operativo e del sistema operativo) e non pubblicizzato; in alcune rare situazioni, l'autore dell'attacco può ottenere il valore del cookie indirettamente dalle conseguenze di un'altra vulnerabilità sfruttabile.

In pratica il cookie stack rende la vita dell'attaccante un po 'più difficile, ma per un bel po'. Non è efficace al 100%, come meccanismo di difesa, ma non è nemmeno banalmente elaborato.

    
risposta data 19.12.2013 - 19:04
fonte
0

Un canarino di stack protegge l'indirizzo di ritorno sullo stack controllando prima il valore del canary prima di spostare l'indirizzo di ritorno dallo stack a EIP. Per sovrascrivere l'indirizzo di ritorno nello stack con un overflow del buffer basato sullo stack, il canny deve essere sovrascritto. Se è noto che l'indirizzo di ritorno nello stack è stato sovrascritto, il programma può uscire in modo sicuro senza passare il flusso di esecuzione all'attaccante.

    
risposta data 19.12.2013 - 18:36
fonte

Leggi altre domande sui tag