¿Contra qué ataques evita una política de W ^ X?

8

Write xor Execute (W ^ X) es una política que indica que un bloque (página) de memoria no se puede marcar como ejecutable y de escritura al mismo tiempo.

¿Qué ataques previene W ^ X, con y sin lo siguiente:

  • Aleatorización del diseño del espacio de direcciones (ASLR)
  • Prevención de ejecución de datos (DEP)
  • Una vez que se puede escribir, nunca se puede ejecutar: la página nunca se puede marcar como ejecutable después de marcarse como de escritura.
pregunta Polynomial 20.08.2012 - 20:54
fuente

1 respuesta

8

W ^ X y "Una vez escribible, nunca ejecutable" son subcasos de DEP. DEP consiste en hacer que los accesos de lectura y los accesos de ejecución sean distintos (una página de escritura también es una página legible). W ^ X trata sobre el uso de DEP para imponer una política específica, que es que una página determinada nunca puede escribirse y ejecutarse al mismo tiempo.

El programador puede exigir el cumplimiento de la política W ^ X porque escribir "datos" y luego ejecutarlos confiablemente implica vaciar algunos cachés, lo que es una operación explícita y costosa. Pasar por el kernel (con una llamada mprotect() ) no es una forma difícil de hacerlo. Por otro lado, obligar al programador a hacer esas cosas explícitamente significa que no sucederá en otras situaciones, a saber, cuando un atacante intenta explotar un desbordamiento de búfer. Esta es una generalización de la característica "la pila no es ejecutable". (Sin embargo, el desbordamiento de búfer todavía está allí; W ^ X simplemente hace la vida más difícil para el atacante).

La política de "una vez que se puede escribir, nunca se puede ejecutar" me parece sospechosa: es incompatible con los compiladores JIT. De todos modos, sería un caso secundario de W ^ X: como W ^ X, en el que la transición W- > X está prohibida.

    
respondido por el Thomas Pornin 20.08.2012 - 22:08
fuente

Lea otras preguntas en las etiquetas