sistema: OPERATIVO
← volver a todos los hacks
OFFENSIVE AI CRITICAL NEW

El agente al volante: detectar la post-explotación dirigida por un LLM

El 10 de mayo de 2026, Sysdig captó su primera intrusión en la que un agente LLM dirigía la post-explotación en tiempo real — de CVE-2026-39987 en marimo a un volcado completo de PostgreSQL en menos de una hora. La pista forense es la forma de los comandos.

2026-06-01 // 6 min affects: marimo<=0.20.4, aws-secrets-manager, ssh-bastion, postgresql

¿Qué es esto?

El 10 de mayo de 2026, el Sysdig Threat Research Team registró lo que describe como su primera intrusión captada en la que un agente basado en un gran modelo de lenguaje dirigía la fase de post-explotación en tiempo real, en lugar de ejecutar un manual de jugadas preestablecido. La cadena completa — de un cuaderno marimo comprometido a un volcado completo de PostgreSQL interno — se desarrolló de principio a fin en menos de una hora, y la propia exfiltración de la base de datos tardó menos de dos minutos. Sysdig publicó su análisis el 26 de mayo de 2026; The Hacker News lo cubrió el 29 de mayo.

El punto de entrada fue CVE-2026-39987, una ejecución remota de código previa a la autenticación crítica en marimo (todas las versiones ≤ 0.20.4), corregida en la 0.23.0 y ahora incluida en el catálogo KEV de CISA. La CVE no es el tema aquí — es la puerta conocida. Lo nuevo es el motor al otro lado de la conexión.

Cómo funciona

La intrusión siguió una ruta clásica de cuatro pivotes: RCE de marimo → recolección de credenciales en la nube desde el disco → recuperación de una clave privada SSH desde AWS Secrets Manager → sesiones SSH contra un bastión interno para volcar PostgreSQL. No se introdujo ninguna primitiva de explotación nueva, y aquí no se reproduce ninguna.

Lo que distingue a un agente de un script automatizado es la composición en tiempo real. Sysdig identificó cuatro firmas forenses, ninguna de las cuales se explica con un manual preestablecido:

Firma                             A qué se parece
--------------------------------  ----------------------------------------------
1. Volcado improvisado            SELECT sobre seis tablas de un host opaco, una
                                   tabla `credential` ausente del esquema incluida
2. Texto de planificación          Un comentario en chino « 看还能做什么 » (« ver qué
                                   más se puede hacer ») filtrado a mitad de sesión,
                                   shell en inglés — en seis IP a ritmo sub-segundo
3. Comandos para la máquina        Separadores `echo '---'`, HEREDOCs entre comillas,
                                   capturas acotadas `| head -N`, `-P pager=off`, `2>/dev/null`
4. Salida consumida como entrada   PGPASSWORD extraído de `cat ~/.pgpass`; un secret
                                   ID elegido de la respuesta `ListSecrets` previa

Un bloque de reconocimiento representativo, con el secreto recolectado eliminado:

PGPASSWORD=[REDACTED] psql -h internal-db -U app -d app -P pager=off << 'EOF'
SELECT * FROM api_key;
SELECT * FROM credential;
SELECT * FROM "user";
EOF

Las cinco pistas de formato — delimitadores entre sondas, un HEREDOC que agrupa consultas sin relación en un único ida y vuelta, salida limitada para caber en una ventana de contexto, el paginador y stderr suprimidos — aparecen cada una por separado en scripts humanos bien diseñados. Apiladas en una sesión improvisada de 113 segundos contra un host del que el operador no tenía evidencia en disco, señalan a un modelo en un bucle de uso de herramientas, leyendo cada resultado y decidiendo la siguiente llamada. La salida (egress) se repartió en once IP de Cloudflare Workers en 22 segundos, frustrando cualquier correlación por IP de origen.

Por qué importa

Sysdig enmarca el cambio como una cuestión de coste, no de capacidad. Un operador con scripts paga en tiempo de ingeniería para añadir cada nuevo objetivo; un operador con agente lleva supuestos generales sobre una clase de aplicaciones y compone la cadena en vivo, de modo que el coste pasa a ser el presupuesto de inferencia. Una composición más barata significa más intrusiones de esta complejidad, más rápido.

La propiedad relevante para el defensor es la adaptabilidad. Un script que topa con un esquema inesperado o un archivo ausente aborta o recurre a un repliegue codificado. Un agente lee la sorpresa y continúa — aquí dio con una tabla credential en una base identificada solo por su nombre de host. Como dice Sysdig: «El atacante ya no necesita ver tu entorno para operar dentro de él.» El corolario: la detección por firma de una secuencia de comandos conocida se degrada rápido, porque el agente compone una secuencia distinta contra cada objetivo.

Defensas

  1. Parchee e inventaríe marimo. Actualice a 0.23.0 o superior de inmediato; CVE-2026-39987 es un shell en una sola petición WebSocket sobre cualquier instancia sin parchear y expuesta. Si no puede actualizar, restrinja o deshabilite el endpoint /terminal/ws.
  2. Rote todo lo accesible desde un proceso marimo. Trate cualquier instancia expuesta públicamente como comprometida: rote claves AWS, claves de API, contraseñas de base de datos y claves SSH, y audite archivos .env, variables de entorno y secretos en disco.
  3. Detecte por intención, no por secuencia. Como el orden de los comandos del agente es propio de cada objetivo, ancle la detección en los objetivos — lectura de archivos de credenciales, secretsmanager:GetSecretValue sobre secretos de clave SSH, SELECT * masivos en tablas credential/user — en lugar de en TTP o cadenas User-Agent específicas.
  4. Correlacione por identidad, no por IP de origen. Los pools de salida tipo Workers rompen la detección por IP. La misma clave SSH o la misma clave de acceso AWS repartida en muchos puntos de presencia en segundos es una señal más fuerte que cualquier dirección aislada.
  5. Saque la telemetría del perímetro. El pivote ocurrió dentro de la red. La detección en tiempo de ejecución en las capas de bastión y base de datos — no solo en los activos expuestos a Internet — es lo que atrapa el movimiento lateral.
  6. Mantenga los secretos fuera de los hosts de aplicación. Una máquina marimo con credenciales de nube en disco es un dispositivo de pivote de una hora. Use credenciales efímeras y acotadas, e identidad a nivel de instancia, en vez de claves de larga duración en archivos .env.

Estado

ElementoReferenciaFechaNotas
Intrusión observadaSysdig TRT2026-05-10Primera post-explotación dirigida por agente LLM captada
Análisis de Sysdig publicadoSysdig2026-05-26Cuatro firmas de agente, IOC, recomendaciones
Cobertura de The Hacker NewsTHN2026-05-29Reseña independiente
CVE-2026-39987GHSA-2679-6mx9-h9xccorregida en 0.23.0RCE pre-auth, marimo ≤ 0.20.4, en la KEV de CISA
Explotación previa de marimoSysdig2026-04De la divulgación a la explotación en menos de 10 horas

El titular no es «la IA reemplazó al atacante». Como lo expresó Michael Clark, de Sysdig: «Estamos viendo a los atacantes reemplazar sus scripts por IA.» La lección defensiva: deje de detectar la secuencia de comandos de ayer y empiece a detectar lo que el atacante intenta lograr.

Sources