¿Cómo se evita la destrucción de la pila?

7

Acabo de leer documento de AlephOne sobre cómo aplastar la pila, e implementado En mi máquina (Ubuntu 12.04), era un poco viejo, así que tuve que tomar mucha ayuda de Internet, pero lo disfruté.

Ahora, quiero aprender cómo se previene eso en la vida real.

Sería genial si me sugieres algunos documentos o recursos en línea que demuestren cómo se previene.

    
pregunta Jaydeep 08.09.2013 - 14:21
fuente

2 respuestas

11

Hay dos técnicas principales para mitigar los desbordamientos de búfer basados en la pila.

La primera técnica es atacar el problema desde la raíz. Los desbordamientos de búfer ocurren cuando un programa intenta escribir fuera de los límites de una estructura de datos. La forma más efectiva de detener un desbordamiento de búfer es detener para que esto no ocurra. Use un lenguaje de programación, ya sea Java, Python, Ruby, que administrará la memoria por usted. Si debe usar C, asegúrese de realizar las comprobaciones adecuadas antes de escribir en un búfer.

La segunda técnica consiste en mitigar el daño que puede causar un desbordamiento de búfer. Técnicas como los canarios de pila, DEP y ASLR entra en esta categoría. Trabajan para limitar el daño que puede causar un desbordamiento del búfer al dificultar que un atacante ejecute un código arbitrario después de un desbordamiento. Tales técnicas pueden ser derrotadas. Para obtener más información sobre DEP y ASLR, consulte esta pregunta .

    
respondido por el Ayrx 08.09.2013 - 14:46
fuente
4

Solo una pequeña nota:

Desde entonces, estaba usando Ubuntu 12.04 para las pruebas, debe haberle dado un comando a su sistema (asumiendo que tomó mucha ayuda de Internet y esta fue la primera vez que intentó romper la pila):

echo 0 > /proc/sys/kernel/randomize_va_space

O algún comando relacionado. Básicamente, este comando deshabilita el ASLR (mencionado por Terry) en el sistema. De forma predeterminada, ASLR es una función habilitada en las versiones 2.6 y posteriores del kernel.

(En realidad quería publicar esto como un comentario, pero no pudo hacerlo debido a problemas de Reputación :))

    
respondido por el Rahil Arora 02.10.2013 - 05:09
fuente

Lea otras preguntas en las etiquetas