La búsqueda de vulnerabilidades en software es una de las tareas más complejas dentro de la ciberseguridad moderna.
Tradicionalmente, los investigadores utilizan herramientas de análisis estático de código (SAST), revisiones manuales y auditorías especializadas para detectar errores que puedan comprometer sistemas.
Sin embargo, el crecimiento de los proyectos de código abierto y la complejidad de las aplicaciones modernas hacen que este proceso sea cada vez más difícil y costoso en tiempo. En este contexto, GitHub Security Lab ha desarrollado un framework basado en inteligencia artificial que permite automatizar parte de este trabajo.
Este sistema, llamado Taskflow Agent, utiliza modelos de lenguaje (LLM) para analizar repositorios, identificar posibles fallos de seguridad y priorizar vulnerabilidades de alto impacto.
GitHub Security Lab Taskflow Agent
El GitHub Security Lab Taskflow Agent es un framework de código abierto diseñado para auditar código automáticamente utilizando inteligencia artificial.
Según los investigadores que lo desarrollaron, la herramienta ha demostrado ser especialmente eficaz para detectar vulnerabilidades críticas como:
- Auth Bypass (bypass de autenticación)
- IDOR (Insecure Direct Object Reference)
- Token leaks (filtración de tokens)
- exposición de información sensible
Estas fallas suelen permitir que un usuario acceda a datos privados de otros usuarios o incluso inicie sesión como otra persona.
Resultados obtenidos con el framework
Durante los últimos meses, los investigadores han utilizado este sistema para auditar proyectos de software abierto.
Los resultados han sido notables:
- más de 80 vulnerabilidades detectadas
- alrededor de 20 ya divulgadas públicamente
- múltiples fallas críticas en aplicaciones reales
El uso del framework permite que los investigadores dediquen más tiempo a verificar manualmente los resultados, en lugar de buscar vulnerabilidades desde cero.
Cómo ejecutar el framework en un proyecto propio
Uno de los aspectos más importantes de esta herramienta es que el framework es open source, por lo que cualquier equipo de desarrollo puede utilizarlo.
Para ejecutarlo en un repositorio propio se deben seguir algunos pasos básicos:
- Acceder al repositorio seclab-taskflows
- Crear un codespace en GitHub
- Esperar a que el entorno se inicialice
- Ejecutar el comando:
El proceso puede tardar entre una y dos horas dependiendo del tamaño del repositorio.
Una vez terminado el análisis, los resultados se muestran en una base de datos SQLite donde se indican posibles vulnerabilidades.
Qué son los Taskflows
Los taskflows son archivos YAML que describen una serie de tareas que un modelo de inteligencia artificial debe ejecutar.
Este sistema permite dividir auditorías complejas en múltiples pasos estructurados, donde cada tarea utiliza los resultados de la anterior.
El framework se encarga de:
- ejecutar tareas de forma secuencial
- compartir información entre pasos
- automatizar el flujo completo de auditoría
Este enfoque es preferible a utilizar un solo prompt grande, ya que los LLM tienen limitaciones de contexto y pueden omitir pasos importantes.
Cómo funciona el proceso de auditoría
El proceso de análisis se divide en varias etapas principales.
Modelado de amenazas
El primer paso consiste en analizar el repositorio y dividirlo en componentes según su funcionalidad.
Durante esta fase se recopila información clave como:
- puntos de entrada del sistema
- interfaces web
- acciones que pueden realizar los usuarios
- uso previsto de cada componente
Estos datos ayudan a definir el modelo de amenazas del sistema.
Identificación de puntos de entrada
En esta fase se detectan las partes del código donde el sistema recibe entrada de datos no confiables, como:
- solicitudes web
- llamadas RPC
- comunicación entre procesos
- entrada del usuario
Estos puntos suelen ser lugares donde aparecen vulnerabilidades.
Sugerencia de posibles vulnerabilidades
Después del análisis inicial, el sistema pide al modelo de IA que sugiera tipos de vulnerabilidades probables en cada componente.
Por ejemplo:
- errores de autorización
- exposición de datos
- fallos en control de acceso
Esta fase se utiliza como punto de partida para la auditoría real.
Auditoría final del código
En la etapa final, el sistema vuelve a analizar el código para confirmar si las vulnerabilidades sugeridas son reales.
Para reducir errores o alucinaciones del modelo, el sistema exige:
- escenarios de ataque realistas
- evidencia concreta en el código
- rutas de archivos y números de línea
También se permite que el modelo concluya que no existe ninguna vulnerabilidad, evitando falsos positivos.
Ejemplos reales de vulnerabilidades detectadas
El framework ha descubierto múltiples fallos en proyectos conocidos.
A continuación, algunos ejemplos relevantes.
Escalada de privilegios en Outline
Uno de los casos más llamativos ocurrió en Outline, una plataforma de colaboración multiusuario.
El sistema detectó una vulnerabilidad que permitía a un usuario con permisos limitados elevar sus privilegios a administrador.
Esto era posible porque el sistema verificaba permisos incorrectos al modificar membresías de grupos dentro de documentos.
Como resultado, un usuario con permisos de edición podía asignarse permisos administrativos.
Fugas de datos en aplicaciones de comercio electrónico
Otra categoría importante de vulnerabilidades se detectó en aplicaciones de comercio electrónico.
En el proyecto WooCommerce, el framework descubrió que usuarios registrados podían ver pedidos de clientes invitados, incluyendo:
- nombres
- direcciones
- números de teléfono
Tras el reporte, se publicó un parche oficial para corregir el problema.
También se detectaron vulnerabilidades similares en Spree Commerce, donde era posible enumerar direcciones de pedidos mediante identificadores secuenciales.
Acceso a Rocket.Chat con cualquier contraseña
Uno de los hallazgos más sorprendentes ocurrió en Rocket.Chat.
El framework detectó un error que permitía iniciar sesión con cualquier contraseña.
El problema se originaba en una función que verificaba contraseñas usando bcrypt, la cual devolvía una Promise en JavaScript.
Sin embargo, el código no utilizaba la palabra clave await, por lo que la verificación nunca se evaluaba correctamente.
Como consecuencia, el sistema interpretaba la validación como verdadera y permitía el acceso.
Esto permitía a un atacante:
- iniciar sesión como cualquier usuario
- acceder a canales de chat
- leer mensajes privados
Resultados generales del análisis
Tras analizar más de 40 repositorios, los resultados fueron los siguientes:
- 1.003 posibles vulnerabilidades detectadas
- 139 confirmadas inicialmente como explotables
- 91 vulnerabilidades únicas tras eliminar duplicados
Después de la verificación manual:
- 20 fueron falsos positivos
- 52 eran vulnerabilidades de bajo impacto
- 19 fueron consideradas vulnerabilidades críticas o importantes
Estas incluían problemas como:
- toma de cuentas
- exposición de datos personales
- modificación no autorizada de configuraciones
Conclusión
El uso de inteligencia artificial para auditorías de seguridad está cambiando la forma en que se detectan vulnerabilidades en software.
El framework Taskflow Agent de GitHub Security Lab demuestra que los modelos de lenguaje pueden ser una herramienta eficaz para identificar fallos críticos en aplicaciones complejas.
Aunque todavía es necesario validar manualmente los resultados, este tipo de sistemas permite acelerar significativamente el análisis de seguridad y mejorar la protección del software de código abierto.
A medida que estas herramientas evolucionen, es probable que la auditoría asistida por IA se convierta en un componente esencial del desarrollo seguro de software.


