← Últimos artículos
💻 computer science

From Documentation to Zero-day Vulnerabilities: LLM-Driven Fuzzing of JavaScript Engines in PDF Readers

Este artículo presenta PDFuzzer, un novedoso fuzzer impulsado por LLM que aprovecha los modelos de lenguaje de gran tamaño para inferir relaciones de API y generar secuencias de llamadas complejas, mejorando así significativamente la cobertura de código y descubriendo 31 vulnerabilidades de día cero en lectores de PDF convencionales en comparación con las herramientas actuales de vanguardia.

Autores originales: Suyue Guo, Stijn Pletinckx, Tianle Yu, Yigitcan Kaya, Saad Ullah, Wenbo Guo, Christopher Kruegel, Giovanni Vigna

Publicado 2026-08-20
📖 7 min de lectura🧠 Análisis profundo

Autores originales: Suyue Guo, Stijn Pletinckx, Tianle Yu, Yigitcan Kaya, Saad Ullah, Wenbo Guo, Christopher Kruegel, Giovanni Vigna

Artículo original bajo licencia CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta es una explicación generada por IA del artículo a continuación. No ha sido escrita ni avalada por los autores. Para mayor precisión técnica, consulte el artículo original. Leer descargo de responsabilidad completo

Imagine un documento digital que hace más que simplemente reposar en una pantalla; puede pensar, calcular y reaccionar. Esta es la promesa del Formato de Documento Portátil, o PDF, cuando está equipado con un motor de JavaScript integrado. Así como un libro físico podría tener un compartimento oculto que se abre solo cuando se pasa una página específica, un PDF puede contener código que se ejecuta dentro de la aplicación lectora, permitiendo formularios interactivos, corrección ortográfica y menús dinámicos. Sin embargo, este poder conlleva un riesgo. Si un hacker logra engañar a este motor para que cometa un error, puede potencialmente tomar el control de la computadora que lee el archivo, robando datos o instalando software malicioso. Durante años, los investigadores de seguridad han intentado encontrar estas trampas ocultas lanzando variaciones aleatorias de documentos a los lectores de PDF, con la esperanza de ver el programa colapsar. Pero este método suele ser como lanzar dardos a ciegas; falla en dar con las secuencias complejas y específicas de acciones requeridas para activar los fallos más peligrosos.

Un equipo de investigadores de la Universidad de California, Santa Bárbara, ha desarrollado un nuevo enfoque para este problema, pasando de las conjeturas ciegas al razonamiento inteligente. Crearon una herramienta llamada PDFuzzer, que actúa menos como un lanzador de dardos y más como un estudiante que ha estudiado a fondo el manual de instrucciones antes de intentar una tarea. En lugar de depender de comandos simples y aislados, este sistema aprende cómo las diferentes partes del lenguaje de programación del motor de PDF dependen unas de otras. Comprende que para realizar una acción específica, un usuario podría necesitar establecer una condición primero, o que dos comandos diferentes deben usar exactamente el mismo nombre para trabajar juntos. Al enseñar a una computadora a leer y comprender la compleja documentación escrita de estos motores de software, los investigadores pudieron generar casos de prueba altamente sofisticados que las herramientas anteriores simplemente no podían concebir.

El núcleo de este nuevo método reside en cómo maneja las "reglas" del software. En el pasado, las herramientas de prueba automatizadas a menudo tenían dificultades porque solo entendían conexiones básicas, como un comando entregando un resultado al siguiente como un testigo en una carrera de relevos. Pasaban por alto relaciones más sutiles, como cuando dos comandos deben usar el mismo valor específico para interactuar correctamente, o cuando un comando establece un estado oculto del cual depende un comando posterior. PDFuzzer utiliza un modelo de lenguaje de gran tamaño, un tipo de inteligencia artificial entrenada en vastas cantidades de texto, para leer los manuales oficiales y los rastros técnicos del software. Luego construye un mapa detallado de cómo cada función se relaciona con todas las demás funciones. Traduce estas descripciones escritas en reglas lógicas estrictas, asegurando que, cuando genera una prueba, los parámetros coincidan perfectamente. Por ejemplo, si un comando requiere que se use un nombre específico, el sistema asegura que se use el mismo nombre en el comando subsiguiente que lo necesita, en lugar de adivinar al azar.

Para probar su creación, los investigadores aplicaron PDFuzzer a tres de los lectores de PDF más populares utilizados en todo el mundo: Adobe Acrobat Reader, Foxit PDF Reader y PDF-XChange Editor. Ejecutaron su herramienta durante semanas, comparando su rendimiento contra los mejores métodos existentes utilizados por expertos en seguridad hoy en día. Los resultados fueron impactantes. Mientras que las herramientas más antiguas lograron explorar solo una fracción de la lógica interna del software, PDFuzzer llegó significativamente más profundo, cubriendo hasta un 48 por ciento más de código. Más importante aún, esta exploración más profunda llevó al descubrimiento de 31 vulnerabilidades de seguridad previamente desconocidas, conocidas como vulnerabilidades de día cero (zero-day). Estos no eran errores menores; muchos eran problemas graves que podrían permitir a un atacante ejecutar código arbitrario, esencialmente tomando el control total de la computadora de la víctima, o filtrar información sensible. En contraste, las otras herramientas encontraron, en conjunto, como máximo seis de tales vulnerabilidades durante el mismo período.

Los investigadores no se detuvieron en la búsqueda de los errores; trabajaron directamente con los fabricantes de software para solucionarlos. A través de un proceso coordinado, divulgaron los detalles de las í 31 vulnerabilidades a las empresas responsables de los lectores de PDF. La industria respondió rápidamente, confirmando y parcheando 26 de los problemas, y diez recibieron identificadores de seguridad oficiales para advertir a los usuarios. Los investigadores también recibieron recompensas financieras, conocidas como bug bounties, que totalizaron $2,450 por su trabajo. Este resultado resalta el valor práctico de su enfoque: al automatizar la difícil tarea de comprender las complejas relaciones del software, pudieron encontrar y solucionar peligros que los expertos humanos y las herramientas automatizadas anteriores habían pasado por alto.

Una parte clave del éxito fue cómo la herramienta manejó la vasta cantidad de información en los manuales de software. La documentación para estos motores puede tener cientos de páginas, llenas de detalles técnicos que son difíciles de procesar automáticamente para una computadora. Los investigadores descubrieron que pedir simplemente a una inteligencia artificial que generara casos de prueba desde cero era lento y a menudo producía disparates. En su lugar, utilizaron la IA para actuar como un traductor, convirtiendo el lenguaje natural de los manuales en reglas precisas legibles por máquina. Desglosaron el proceso en pasos: primero, extraer la estructura básica de los comandos; segundo, inferir los detalles ocultos para comandos que no estaban totalmente documentados; y tercero, utilizar un resolvedor matemático para asegurar que los casos de prueba generados satisficieran todas las restricciones lógicas. Este enfoque híbrido, que combina el poder de razonamiento de la inteligencia artificial con la precisión de la lógica matemática, resultó ser mucho más eficiente y efectivo que confiar únicamente en la IA.

El estudio también reveló que las vulnerabilidades más peligrosas a menudo requerían una secuencia específica de eventos que las herramientas anteriores no podían replicar. Por ejemplo, un fallo involucraba una situación en la que un elemento de la interfaz de usuario era creado y luego inmediatamente eliminado, pero un comando posterior intentaba usarlo de nuevo. Para activar esto, el caso de prueba necesitaba crear el elemento, usarlo, eliminarlo y luego intentar acceder a él nuevamente, todo ello asegurando que los nombres y valores utilizados en cada paso fueran idénticos. Las herramientas más antiguas, que trataban cada comando como un evento aislado, no podían generar esta cadena de eventos específica. PDFuzzer, al comprender la relación entre los comandos, pudo construir la secuencia exacta necesaria para exponer el fallo. Esta capacidad de modelar dependencias complejas fue el factor decisivo para encontrar la mayoría de las nuevas vulnerabilidades.

Más allá del éxito inmediato con los lectores de PDF, los investigadores sugieren que su método podría aplicarse a otras áreas de la seguridad del software donde exista documentación detallada. Probaron su flujo de trabajo en el lenguaje de programación utilizado para las macros de Microsoft Word, un entorno diferente pero similarmente complejo, y encontraron que los mismos tipos de relaciones y dependencias existían allí también. Esto indica que el desafío de comprender cómo interactúan los componentes del software no es exclusivo de los lectores de PDF, sino que es un problema generalizado en la informática moderna. La capacidad de convertir automáticamente los manuales escritos en reglas de prueba rigurosas ofrece un nuevo camino para asegurar el software que impulsa nuestras vidas diarias.

Al final, el trabajo demuestra que el futuro de la seguridad del software puede residir en enseñar a las computadoras a leer y comprender las instrucciones que escribimos para ellas. Al cerrar la brecha entre la documentación escrita por humanos y las pruebas generadas por máquinas, los investigadores han demostrado que podemos encontrar y solucionar fallos peligrosos de manera más rápida y exhaustiva que antes. Las 31 vulnerabilidades que descubrieron sirven como un recordatorio de cuánta complejidad permanece oculta en el software que usamos todos los días, y qué tan seguros podemos estar cuando tenemos herramientas lo suficientemente inteligentes como para encontrar las grietas antes que los malos actores. El proceso no se trató de magia o suerte, sino de construir un sistema que pudiera pensar a través de la lógica del software, asegurando que cada caso de prueba fuera un intento significativo de romper el sistema, en lugar de una conjetura aleatoria.

¿Ahogado en artículos de tu campo?

Recibe resúmenes diarios de los artículos más novedosos que coincidan con tus palabras clave de investigación — con resúmenes técnicos, en tu idioma.

Probar Digest →