¿La prevención de ataques de desbordamiento de búfer evita los ataques de ROP?

0

¿La prevención de ataques de desbordamiento de búfer evitaría los ataques de Programación Orientada por Devolución (ROP)?

    
pregunta Jonathan 03.03.2015 - 00:17
fuente

2 respuestas

3

ROP consiste en aprovechar un secuestro de subprocesos de ejecución inicial en la ejecución de código arbitrario incluso en situaciones en las que el sistema operativo intenta evitar eso (con DEP y ASLR ).

Por "secuestro del hilo de ejecución" quiero decir que el atacante logra hacer que la ejecución salte a un lugar imprevisto, normalmente sobrescribiendo una ranura de memoria que el código de la aplicación interpretará más adelante como un puntero al código. Tradicionalmente , esa ranura es la dirección de retorno de la función actual (en la pila, utilizada al salir de la función) o un puntero a la función (normalmente desde un vtable en código C ++), y la sobrescritura se realiza mediante un desbordamiento de búfer. Sin embargo, cualquier otro tipo de sobrescritura puede usarse conceptualmente; por ejemplo, un use-after-free a veces puede convertirse en un salto arbitrario.

En cualquier caso, ROP no se trata de cómo se desvía el sistema de destino, sino de lo que se hace a partir de ese momento. En ese sentido, no existe tal cosa como un "ataque ROP".

    
respondido por el Thomas Pornin 03.03.2015 - 01:00
fuente
5

Una búsqueda rápida en Google dice "no". El documento original de la presentación original (Sección 4.2) dice que aunque el Desbordamiento de búfer es más fácil, es no es necesario.

  

Sin embargo, un desbordamiento de pila no es necesario. La carga útil que contiene el   programa orientado al retorno podría estar en el montón, y el atacante podría   desencadenar su ejecución sobrescribiendo un puntero de función con el   Dirección de un fragmento de código que establece% esp a la dirección de la primera   gadget y ejecuta una devolución.

    
respondido por el schroeder 03.03.2015 - 00:36
fuente

Lea otras preguntas en las etiquetas