jueves, abril 30, 2026

Bug Hunting and Vibe-Exploiting en 86-DOS "High-performance operating system for the 8086" version 1.00 del 04/28/81

Hace un par de días, coincidiendo con el 45 aniversario de su creación, Tim Paterson ha puesto en GitHub el código fuente en abierto de varias versiones de nuestro querido DOS, para que los amantes del retro-computing puedan analizarlo, utilizarlo, mejorarlo, o construir cosas nuevas. Entre ellas está el código del 86-DOS "High-performance operating system for the 8086" version 1.00 del 04/28/81, una joya. Quiero agradecer a Tim Paterson que haya compartido esta maravilla de nuestra historia para poder estudiarlo, quererlo y seguir dándole continuidad.

Figura 1: Bug Hunting and Vibe-Exploiting en 86-DOS

La gracia del mundo en que vivimos hoy en día, es que, gracias a la irrupción de la Inteligencia Artificial, se puede hacer Bug Hunting para encontrar bugs y explotarlos simplemente pidiéndole esto al modelo. De esto os hablé en el artículo de "Cómo usar Deep Reasoning en GitHub para buscar ( y parchear ) Bugs en proyectos Open Source", que os invito a leer, así como compraros el libro de "Bug Hunter" (hoy lo tienes con descuento aún).

Figura 2:"Bug Hunterescrito por David Padilla en 0xWord

Como oso podéis imaginar, como puro entretenimiento, y experimento, le pedí a Gemini Thinking que analizara el código de la versión 86-DOS publicada en GitHub, para ver qué vulnerabilities podía encontrar y de eso va este artículo de hoy.
El resultado tras pasarle el código es que Gemini ha reportado 6 Bugs en el código Ensambalador (ASM) de esta versión 86-DOS, que os paso a dejar por aquí. Y mola mucho lo bien explicados que están cada uno de ellos.

Figura 4: Arbitrary Memory Overwrite

Además, como os conté en el artículo de "Cómo crear un exploit 1-day sobre un CVE de Chrome con Vibe Coding usando Claude Opus (no Mythos) y poner en jaque todas las apps en Electron" hoy en día es posible utilizar también a los modelos de IA para la fase de creación del exploit, así que le he pedido que me haga una PoC de cómo explotar cada uno de ellos. Así que le he pedido un poco de Vibe-Exploiting.

Figura 5: PoC de Exploit para el bug 1

Por supuesto, en esta versión de DOS no hay DEP, ASLR o Privilegios de CPU, que tienen los sistemas operativos Windows hoy en día - Máxima Seguridad en Windows lo explica perfectamente - pero es que aún faltaban muchos hackers haciendo exploits de Smashing the Stack, y por supuesto las vulnerabilidades como Spectre, Meltdown o GhostRace a bajo nivel.

Figura 6: Information Leakage en el nombre de un fichero a copiar

Explotar estas vulnerabilidades es bastante sencillo sin tener que conseguir evitar las protecciones de hoy en día, así que este Information Leakage se basa en poner nombres largos y ver qué datos de la memoria se consiguen, como vemos aquí.

Figura 7: Explotación del bug #2

En total, como os he dicho son seis, y cada uno de ellos es distinto, lo que hace aún más bonito este ejercicio teórico, ya que de todos ellos se aprende algo diferente.

Figura 8: Missing Directory Entry Validation

En este caso no nos ha hecho el exploit, porque lo que hay que hacer es una explotación modificando los bytes del disco a bajo nivel, con un editor hexadecimal sin pasar por las herramientas de gestión de ficheros el sistema operativo.

Figura 9: Explotación del bug #4

El siguiente es un ejemplo de cómo hay direcciones importantes del sistema operativo que pueden ser sobrescritas para tomar el control del flujo de ejecución del sistema operativo.

Figura 10: Lack of Interrupt Vector Protection

Esto es un fallo que permite a un malware tomar control de esas direcciones de memoria y ejecutar un software malicioso, como un rootkit que troyanice todo el sistema operativo. Esto es por lo que se crearon los sistemas de arranque seguros con los TPM (Trusted Platform Modules).

Figura 11: Explotación con secuestro de interrupcion

El penúltimo de los bugs reportados es la posibilidad de poder corromper el sistema de archivos FAT de un disco con un puntero a un cluster malicioso, como se explica en la imagen siguiente.

Figura 12: Fat Corruption via Malicious Cluster Pointer

Y para explotarlo, aquí tienes un ejemplo en forma de snippet de código para meter dentro de un programa que lo ejecute y corrompa la FAT.

Figura 13: Snippet de código para explotarlo

Y la última vulnerabilidad es un bug que permite una Denegación de Servicio (DoS) que puede crashear el sistema operativo y obligar al reinicio de la máquina.

Figura 14: Stack Exhaustion

El problema es la gestión de la pila (stack) del sistema y para meter un puntero a la base de la pila que genera una re-escritura de los registros y colapsa cuando intenta volver de la llamada, porque está sobre-escrita la dirección de retorno.

Figura 15: Exploit genera un bucle con la INT 21h

El uso de buscar vulnerabilidades con IA es algo de lo que ya os hablé en el libro de Hacking y Pentesting con Inteligencia Artificial, y por supuesto es parte fundamental del trabajo de Bug Hunter que David Padilla ha publicado.

Si te interesa la IA y la Ciberseguridad, tienes en este enlace todos los postspapers y charlas que he escrito, citado o impartido sobre este tema: +300 referencias a papers, posts y talks de Hacking & Security con Inteligencia Artificial.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


1 comentario:

Rfog dijo...

Maligno, para bloquear un x86 de la época, y creo que hasta 80386, solo había que ejecutar estas dos instrucciones en secuencia: cli, sti y el ms-dos (con windows incluído), se iba de vacaciones y la única opción era el botón de reset o apagar y volver a encender.

Entrada destacada

Hacking IA: Jailbreak, Prompt Injection, Hallucinations & Unalignment. Nuestro nuevo libro en 0xWord

Pocas veces me ha hecho tanta ilusión que saliera un nuevo libro en 0xWord como con este libro de " Hacking IA: Jailbreak, Prompt Inje...

Entradas populares