Ir al contenido principal

Entradas

Evitando la protección de ejecución en la pila con ROP (Return Oriented Programming)

En un artículo anterior ya hice una introducción a la explotación de vulnerabilidades por buffer overflow . Durante mucho tiempo, este tipo de ataques era muy común pero, afortunadamente, cada vez es más difícil explotar este tipo de vulnerabilidades gracias a mejoras como NX (también conocido como DEP o PAX). Básicamente consiste en evitar que se pueda ejecutar código dentro del marco de la pila. Entonces problema solucionado -estarás pensando. Pues no.

Explotando vulnerabilidades: buffer overflow y shellcode

El anterior post lo dediqué a hablaros del funcionamiento de la pila en las llamadas a funciones con la intención de seguir profundizando hoy en los posibles problemas que pueden surgir de una programación poco cuidadosa. La mayoría de los problemas de seguridad que surgen a diario tienen su raíz en una vulnerabilidad del código ejecutable de un programa. Hoy voy a hablar de desbordamiento de buffers o buffer overflow y shellcodes.

La pila y las llamadas a funciones

Me sorprende la frecuencia con la que cada día aparecen nuevas vulnerabilidades en software hecho por buenos programadores. Conste que nos puede pasar a cualquiera (el que esté libre de pecado que tire la primera piedra), así que me gustaría dedicar un par -o tres, ya veremos- de artículos a tratar de concienciar (y concienciarme) sobre la programación de código seguro. Antes de entrar en harina voy a dedicar este artículo a aclarar cómo funciona la llamada a una función y el papel que juega la pila en todo esto. El ejemplo que voy a mostrar están desarrollados sobre arquitectura x86 y GNU/Linux.