House of Apple 2 sigue funcionando en glibc 2.43 tras análisis de GDB
Un investigador revisa la técnica FSOP de House of Apple 2 en Ubuntu 26.04 y Fedora 44, confirmando que sigue explotable pese a la validación del vtable en glibc 2.43.
El autor del artículo ha vuelto a montar la explotación House of Apple 2 bajo las versiones más recientes de glibc 2.43, empaquetadas en Ubuntu 26.04 LTS y Fedora 44. No se introduce ninguna variante nueva; el objetivo es comprobar si la ruta de ataque basada en la manipulación de estructuras de flujo de archivo (IO_FILE_plus) sigue viable.
La prueba se lleva a cabo dentro de un sandbox provisto en el repositorio de GitHub, que incluye GDB con pwndbg, pwntools, ropper y un binario objetivo con un menú interactivo para operaciones de fopen, fread, fwrite y fclose. El entorno permite sobrescribir una estructura FILE, disponer de una fuga de heap y una fuga de libc, requisitos clásicos para la explotación.
En la práctica, el ataque se apoya en la File Stream Oriented Programming (FSOP). La idea es corromper el puntero vtable de _IO_FILE_plus para redirigir una llamada indirecta. En glibc moderno el vtable es validado por _IO_vtable_check, lo que impide simplemente colocar una dirección arbitraria. House of Apple 2, introducido por Roderick Chan, evita esta restricción usando un vtable legítimo que apunta a la maquinaria de flujos anchos, donde se despacha un segundo vtable sin validación de rango. Esa cadena permite obtener una llamada arbitraria, pivotar la pila y lanzar una cadena ROP.
El autor muestra paso a paso en GDB la inspección de las estructuras struct _IO_FILE y struct _IO_FILE_plus, la localización del vtable _IO_file_jumps y la identificación del punto de llamada en fwrite+216. Intentar sobrescribir el vtable con la dirección de una función ganadora (win-0x38) provoca la caída en _IO_vtable_check, que aborta la ejecución antes de alcanzar el breakpoint. El código fuente de la validación está disponible en vtables.c del propio glibc.
A pesar del bloqueo, el experimento confirma que la ruta de FSOP sigue operativa: el vtable legítimo puede ser manipulado para alcanzar la sección de flujos anchos y ejecutar código controlado. El sandbox permite reproducir todo el proceso, lo que resulta útil para investigadores que necesiten entender los límites de la mitigación de glibc.
En conclusión, la técnica House of Apple 2 no ha sido eliminada por las últimas versiones de glibc. Los defensores deberán combinar la validación de vtable con otras mitigaciones (por ejemplo, IO_CHECK_VTABLE o ASLR reforzado) para cerrar este vector. La comunidad ahora dispone de un laboratorio práctico para evaluar mejoras futuras en la seguridad de los flujos de archivo.