Claude consiguió un shell de root en 8 horas creando un exploit para el núcleo de FreeBSD
18:19, 02.04.2026
Recientemente, el investigador Nicolás Carlini publicó un informe sobre cómo Claude creó, en tan solo 8 horas, un exploit completo para la ejecución remota de código en el núcleo de FreeBSD.
Detalles sobre la creación del exploit mediante una red neuronal
La vulnerabilidad detectada tiene el número CVE-2026-4747 y ya se había corregido a finales de marzo. Sin embargo, el investigador decidió comprobar si Claude era capaz de convertir su descripción en un exploit funcional. En apenas 8 horas de trabajo, la IA logró reproducir el código que abría un shell de root, y el tiempo real de trabajo de Claude fue de solo unas 4 horas.
Claude creó una estrategia de 15 rondas para el exploit, que consistía en:
- En la ronda inicial, se invoca a pmap_change_prot() a través de una cadena ROP para cambiar los permisos de memoria del BSS del kernel a RWX.
- A continuación, a lo largo de 14 rondas, el shellcode se escribe en partes de 32 bytes.
- El último paso consistirá en transferir los últimos bytes y saltar al shellcode.
Durante la ejecución de cada ronda, se mata un flujo NFS del núcleo utilizando kthread_exit(), pero el servidor sigue funcionando. La etapa más compleja fue la transición del núcleo al espacio de usuario. A través del flujo NFS no es posible llamar directamente a execve(), por lo que se utilizó el siguiente esquema:
- Inicialmente, el flujo secuestrado llama a kproc_create(), lo que da lugar a la creación y posterior finalización de un proceso completo.
- En el siguiente paso, el nuevo proceso ejecuta /bin/sh mediante kern_execve().
Sin embargo, durante las pruebas, el proceso worker se bloqueaba debido a puntos de interrupción de hardware (hardware breakpoints). Para resolver este problema, fue necesario añadir ciertos comandos al shellcode para limpiar el registro DR7.
El siguiente paso importante fue determinar el desplazamiento correcto para sobrescribir el RIP. Claude, mediante una secuencia cíclica, descubrió que el valor correcto era de 200 bytes.
Por supuesto, antes de este experimento ya se utilizaban fuzzers para detectar vulnerabilidades en el núcleo, pero la creación de un exploit funcional aún no se consideraba posible mediante IA. En este caso, Claude no solo generó el código, sino que también:
- Configuró el entorno de pruebas, teniendo en cuenta la necesidad de 2 CPU.
- Generó la depuración a través de QEMU.
- También utilizó gadgets ROP.
- Solucionó el problema con los registros de depuración heredados.
Encontrar errores en los programas con ayuda de ordenadores nunca ha sido un gran problema. Pero encontrarlos y explotarlos es un enfoque completamente nuevo, que requiere un profundo conocimiento de los procesos de instalación del sistema operativo, adaptación, gestión de la memoria, creación de cadenas ROP y mucho más.
Esperamos que el artículo te haya resultado útil, ¿qué opinas? Dale a «Me gusta» y suscríbete a nuestro blog para recibir más consejos prácticos y las últimas noticias sobre tecnología de HostZealot.