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).
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.
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.
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í.
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.
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.
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.
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).
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.
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.
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.
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.
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.
Figura 16: Hacking & Pentesting con Inteligencia Artificial.
Si te interesa la IA y la Ciberseguridad, tienes en este enlace todos los posts, papers 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)



DragonJAR
8.8 Chile
Ekoparty
e-Hack MX
AREA 51
Comunidad Dojo Panamá
ARPAHE SOLUTIONS 























1 comentario:
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.
Publicar un comentario