Ejecución de código mediante manipulación de DWARF en glibc

Fuentes: Code execution via DWARF manipulation in glibc

Este artículo técnico detalla un método avanzado para lograr la ejecución de código arbitrario en sistemas que utilizan glibc 2.44, sin necesidad de vulnerabilidades de desmemoria clásicas ni de romper ASLR. La técnica se basa en la manipulación de los puntos de cancelación de hilos POSIX y la ejecución de bytecode DWARF para controlar el flujo de ejecución del sistema.

El autor explica que la función read, como punto de cancelación, permite interceptar el proceso de terminación de un hilo mediante la llamada a __libc_enable_asynccancel. Al modificar los punteros de puntero (mangled pointers) y los marcadores de cancelación en la pila, es posible redirigir la ejecución hacia una máquina virtual DWARF personalizada. Este enfoque permite ejecutar código sin depender de gadgets estándar como printf o system, que suelen ser inestables en entornos de sandbox.

La implementación requiere dos primitivas fundamentales: el control del contenido de un malloc grande y escrituras fuera de límites con bytes nulos. El artículo analiza la probabilidad estadística de que los punteros THREAD_SELF y cancelhandling caigan dentro de una zona de memoria inyectada, utilizando asignaciones de 16 MiB para maximizar la probabilidad de éxito. Este método representa una alternativa viable a las técnicas tradicionales de explotación, ofreciendo una vía más portable y controlada para la ejecución remota de código en entornos de seguridad estrictos.