L'impedimento degli attacchi di overflow del buffer impedisce gli attacchi ROP?

0

Prevenire gli attacchi di overflow del buffer impedire attacchi Return Oriented Programming (ROP)?

    
posta Jonathan 03.03.2015 - 00:17
fonte

2 risposte

3

ROP tratta di sfruttare un dirottamento del thread di esecuzione iniziale nell'esecuzione di codice arbitrario anche in situazioni in cui il sistema operativo tenta di impedire proprio questo (con DEP e ASLR ).

Con "dirottamento del thread di esecuzione" intendo che l'autore dell'attacco riesce a far saltare l'esecuzione in un punto non previsto, in genere sovrascrivendo uno slot di memoria che il codice dell'applicazione interpreterà più tardi come puntatore al codice. Tradizionalmente , tale slot è l'indirizzo di ritorno della funzione corrente (sullo stack, utilizzato all'uscita dalla funzione) o un puntatore di funzione (in genere da un vtable nel codice C ++) e la sovrascrittura viene eseguita tramite un buffer overflow. Tuttavia, qualsiasi altro tipo di sovrascrittura può essere usato concettualmente; ad esempio, un use-after-free può a volte essere trasformato in un salto arbitrario.

In ogni caso, il ROP non riguarda il modo in cui si ottiene il deragliamento del sistema di destinazione, ma quello che si fa da quel momento in poi. In questo senso, non esiste un "attacco ROP".

    
risposta data 03.03.2015 - 01:00
fonte
5

Una rapida ricerca su Google dice "no". Il documento originale della presentazione originale (Sezione 4.2) dice che sebbene Buffer Overflow sia più semplice, è non necessario.

However, a stack overflow isn’t necessary. The payload containing the return-oriented program could be on the heap, and the attacker could trigger its execution by overwriting a function pointer with the address of a code snippet that sets %esp to the address of the first gadget and executes a return.

    
risposta data 03.03.2015 - 00:36
fonte

Leggi altre domande sui tag