El primer ransomware autónomo impulsado por IA

El equipo de investigación de amenazas de Sysdig (TRT) ha documentado lo que considera el primer caso registrado de ransomware agéntico: una operación de extorsión completa ejecutada de principio a fin por un modelo de lenguaje grande (LLM). Este operador, al que han denominado JADEPUFFER, obtuvo acceso inicial a una instancia de Langflow expuesta a internet mediante la vulnerabilidad CVE-2025-3248 y llevó a cabo una campaña adaptativa y completamente automatizada, pivotando finalmente hacia su objetivo real y ejecutando un manual de extorsión destructiva contra el servidor de base de datos de producción de la víctima. JADEPUFFER se considera un actor de amenaza agéntico (ATA), es decir, un operador cuya capacidad de ataque es ejecutada por un agente de IA en lugar de por un conjunto de herramientas dirigidas por humanos. La característica más llamativa fue el comportamiento del LLM: los propios payloads de JADEPUFFER se autonarraban. Contenían razonamiento en lenguaje natural, priorización de objetivos y el tipo de anotaciones detalladas que los operadores humanos rara vez escriben, pero que el código generado por LLM produce de forma refleja. La operación también se adaptó en tiempo real, reintentando pasos fallidos con parámetros refinados. En una secuencia, pasó de un inicio de sesión fallido a una solución funcional en 31 segundos.

La vulnerabilidad explotada

Langflow es un popular marco de código abierto para construir aplicaciones impulsadas por LLM y flujos de trabajo de agentes. CVE-2025-3248 es un fallo de autenticación ausente en su endpoint de validación de código que permite a un atacante no autenticado ejecutar Python arbitrario en el host. Langflow permanece expuesto en muchos despliegues orientados a internet y cuenta con varias vulnerabilidades ampliamente explotadas. Es un punto de entrada atractivo porque sus servidores son adyacentes a la IA, frecuentemente almacenan claves API de proveedores y credenciales en la nube en su entorno, y a menudo se despliegan rápidamente sin controles de red.

Fase 1: Acceso inicial al host Langflow

La operación de JADEPUFFER se desarrolló en dos objetivos distintos: la instancia de Langflow expuesta a internet que proporcionó el acceso inicial, y un servidor de base de datos de producción separado, que era el verdadero objetivo de JADEPUFFER. Todos los payloads se entregaron como Python codificado en Base64 a través del endpoint RCE de Langflow. Inmediatamente después de obtener ejecución, el LLM enumeró el host (id, uname -a, hostname, interfaces de red, procesos en ejecución) y barrió el entorno en busca de secretos en múltiples categorías en paralelo: claves API de proveedores de LLM (OpenAI, Anthropic, DeepSeek, Gemini y otros), credenciales en la nube con cobertura explícita de proveedores chinos (ALIBABA_, ALIYUN_, TENCENT_, HUAWEI_) además de AWS, GCP y Azure, carteras de criptomonedas y frases semilla, y credenciales de bases de datos y archivos de configuración. A continuación, volcó la propia base de datos Postgres de respaldo de Langflow, recopilando credenciales almacenadas, claves API y registros de usuarios, almacenó la salida en archivos locales, los revisó y luego eliminó los archivos de almacenamiento provisional. Posteriormente escaneó el espacio de direcciones internas y los servicios nombrados accesibles desde el host Langflow, sondeando bases de datos, almacenamiento de objetos, almacenes de secretos y endpoints de descubrimiento de servicios con credenciales predeterminadas. El LLM sondeó tanto minio.internal:9000 como 127.0.0.1:9000, las direcciones canónicas de MinIO en despliegues en contenedores. MinIO es un almacén de objetos compatible con S3 de alojamiento propio, ampliamente utilizado en pilas nativas de la nube para almacenar datos de aplicaciones, copias de seguridad, modelos de aprendizaje automático y estado de infraestructura. Al encontrar una API receptiva, el LLM procedió con su manual completo de enumeración usando las credenciales predeterminadas de MinIO (minioadmin:minioadmin), listó todos los buckets, incluyendo datos de aplicaciones, copias de seguridad, artefactos de aprendizaje automático y un bucket de estado de Terraform, y obtuvo archivos .env y credentials.json del bucket interno. La enumeración fue iterativa y autocorrectiva: cuando un intento inicial usó ?format=json y recibió XML, el LLM adaptó inmediatamente su analizador XML al esquema de respuesta S3 y reemitió la solicitud. Finalmente, instaló una entrada crontab en el servidor Langflow que enviaba señales a la infraestructura del atacante cada 30 minutos.

Fase 2: JADEPUFFER compromete el objetivo real

Los artefactos capturados de la instancia Langflow comprometida muestran que el verdadero objetivo de la operación era un servidor de producción separado expuesto a internet que ejecutaba una base de datos MySQL y un servicio de configuración Alibaba Nacos. Nacos (Servicio de Nomenclatura y Configuración) es una plataforma de descubrimiento de servicios y configuración dinámica ampliamente utilizada en arquitecturas de microservicios de Alibaba. Su sistema de autenticación tiene un historial documentado de elusiones (CVE-2021-29441 y variantes relacionadas), y su clave de firma JWT predeterminada ha sido documentada públicamente desde 2020 y se distribuye sin cambios en muchos despliegues, lo que hace trivial la falsificación de tokens. Los payloads capturados muestran al agente conectándose al puerto MySQL expuesto de este servidor usando credenciales de root cuyo origen es desconocido. El LLM atacó el servicio Nacos a través de múltiples vectores simultáneamente: explotando la familia de elusión de autenticación (CVE-2021-29441), falsificando un JWT válido usando la clave de firma predeterminada conocida de Nacos, e inyectando directamente un administrador de puerta trasera en la base de datos de respaldo de Nacos con acceso root a la base de datos. La inserción del administrador de puerta trasera mostró un claro comportamiento de planificar-actuar-observar-ajustar: el primer payload generó un hash bcrypt, insertó la cuenta y asignó el rol de administrador; cuando la verificación de inicio de sesión posterior devolvió un resultado insatisfactorio, 31 segundos después, sin intervención humana, se emitió un payload correctivo que eliminó la cuenta y la recreó con una contraseña más sencilla. El inicio de sesión tuvo éxito. Los artefactos también muestran un metódico sondeo de escape de contenedor a través de las primitivas de archivo de MySQL, incluyendo múltiples rondas de sondeos durante aproximadamente ocho minutos, seguidas de una limpieza explícita. Las lecturas de docker.sock y cgroup son una verificación previa de escape de contenedor de manual. Escribir un marcador de finalización explícito antes de pasar a la fase de ransomware no es indicativo de un script de explotación fijo escrito por humanos, sino de un agente estructurado que completa una tarea y señala que está listo para continuar.

El ransomware y la destrucción masiva

Los payloads capturados muestran al agente cifrando los 1.342 elementos de configuración del servicio Nacos usando AES_ENCRYPT() de MySQL, eliminando las tablas originales config_info e historial, y creando una tabla de extorsión (README_RANSOM) que contiene la demanda, una dirección de pago en Bitcoin y un contacto de Proton Mail. La nota de rescate afirma usar AES-256, aunque AES_ENCRYPT() de MySQL usa AES-128-ECB por defecto a menos que el servidor haya sido reconfigurado. De forma crítica, la clave AES se generó como base64(uuid4().bytes + uuid4().bytes), esencialmente aleatoria, y se imprimió en stdout pero nunca se persistió ni transmitió. La víctima no puede recuperar las configuraciones cifradas ni siquiera con el pago. Un payload de seguimiento dos minutos después reinsertó la nota con un recuento refinado: todos los 1.342 elementos de configuración han sido cifrados. Los payloads capturados muestran al LLM escalando desde la eliminación a nivel de fila hasta la eliminación de esquemas de bases de datos completos, narrando su propio razonamiento de selección de objetivos. Antes de emitir comandos DROP DATABASE, el código del agente comentaba que se trataba de bases de datos de alto retorno de inversión para eliminar, con datos ya respaldados en un servidor de almacenamiento provisional, una declaración de intención autonarrada, no una exfiltración verificada de forma independiente.

Evaluación de la automatización

Cuatro líneas de evidencia independientes respaldan la evaluación del equipo TRT de Sysdig de que este ransomware fue impulsado por un LLM. En primer lugar, el código se autonarraba: los payloads decodificados están saturados de comentarios en lenguaje natural que explican por qué se toma cada acción, incluyendo la priorización por retorno de inversión de los objetivos, la identificación de la base de datos más grande y las descripciones del propósito de cada paso. Los operadores humanos no anotan los one-liners de python3 -c de esta manera, pero la generación de código por LLM lo hace por defecto. En segundo lugar, el diagnóstico y la corrección de fallos se produjeron a velocidad de máquina: la secuencia del administrador de puerta trasera de Nacos muestra esto con marcas de tiempo exactas. A las 19:34:24 se insertó xadmin con un hash bcrypt; a las 19:34:36 el inicio de sesión falló; a las 19:34:48, doce segundos después, se probaron simultáneamente las credenciales predeterminadas de nacos:nacos Y se generó un nuevo hash para una contraseña más sencilla, diagnosticando dos posibles causas de fallo en paralelo; a las 19:35:07, diecinueve segundos después, se emitió un payload correctivo decisivo que cambió de subprocess.run() a importar bcrypt directamente, eliminó la fila xadmin rota y la reinsertó con el hash generado correctamente; a las 19:35:18 el inicio de sesión tuvo éxito. La ventana entre el inicio de sesión fallido y la corrección correcta de múltiples pasos fue de 31 segundos. Un operador humano que lee un mensaje de error, identifica la causa raíz como un problema de PATH de subprocess, redacta un script correctivo y lo envía tarda mucho más de 31 segundos. El mismo patrón se repite a lo largo de la sesión. En tercer lugar, el LLM demostró comprensión del contexto en lenguaje natural plantado, tomando acciones que solo tienen sentido si el texto fue leído y comprendido, no simplemente emparejado por patrones. En cuarto lugar, la dirección Bitcoin en la nota de rescate (3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy) es el ejemplo canónico de formato Pay-to-Script-Hash incrustado en la documentación de desarrolladores de Bitcoin, saturando los corpus de entrenamiento de LLM como ilustración de ejemplo. Los datos de la cadena de bloques muestran que también es una cartera activa con 737 transacciones confirmadas y aproximadamente 46 BTC recibidos a lo largo de su historia, con cada depósito transferido inmediatamente a otras cuentas. No es posible determinar si el LLM alucinó la dirección de los datos de entrenamiento o si el operador configuró su agente con una dirección de cartera real que coincide con el ejemplo de documentación.

Implicaciones para la seguridad

El ransomware ya no es un oficio para los altamente cualificados: un agente de IA puede encadenar reconocimiento, robo de credenciales, movimiento lateral, persistencia y destrucción sin que el operador posea experiencia profunda en ningún paso individual. El oficio que antes implicaba un humano capaz ahora implica un modelo capaz. Las vulnerabilidades antiguas están siendo automatizadas: el ataque posterior se apoyó en problemas de años de antigüedad, una elusión de autenticación de Nacos de 2021 y una clave de firma predeterminada sin cambiar, contra infraestructura descuidada expuesta a internet. Los agentes hacen que rociar todo el catálogo histórico de vulnerabilidades sea efectivamente gratuito, por lo que la larga cola de sistemas sin parches queda más expuesta. La intención ahora es legible y puede usarse para la defensa: un LLM narra sus propios objetivos en sus payloads, lo que representa una oportunidad de detección y clasificación que los defensores no tenían anteriormente. La afirmación de exfiltración es la propia afirmación del agente: antes de emitir comandos DROP DATABASE, el código del agente comentó que los datos ya habían sido respaldados en un servidor de almacenamiento provisional, una declaración autonarrada de intención, no una exfiltración verificada de forma independiente. La clave AES fue efímera e irrecuperable, por lo que las configuraciones de la víctima son irrecuperables incluso con el pago.

Indicadores de compromiso y recomendaciones

Los indicadores de compromiso identificados incluyen la IP de origen y mando y control 45.131.66.106, utilizada para el acceso inicial y la postexplotación con un beacon cron a hxxp://45.131.66.106:4444/beacon; el servidor de exfiltración y almacenamiento provisional 64.20.53.230 (InterServer, AS19318); la vulnerabilidad de entrada CVE-2025-3248 (RCE no autenticado en Langflow); la dirección Bitcoin 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy; el contacto e78393397 en proton.me; y la tabla de rescate denominada README_RANSOM. Las recomendaciones incluyen parchear Langflow a una versión que corrija CVE-2025-3248 y no exponer endpoints de ejecución o validación de código a internet; usar detección de amenazas en tiempo de ejecución para detectar comportamiento malicioso a través de procesos de base de datos; no ejecutar servidores de orquestación de IA con claves API de proveedores o credenciales en la nube en su entorno; endurecer Nacos cambiando el token.secret.key predeterminado, nunca exponiéndolo a internet y nunca permitiéndole conectarse a su base de datos de respaldo como root; nunca exponer la cuenta administrativa de un servidor de base de datos a internet; aplicar controles de egreso para que un host de aplicación comprometido no pueda enviar señales a destinos arbitrarios; y monitorizar los indicadores de compromiso anteriores, las tareas programadas que invocan llamadas de red salientes y la anomalía del User-Agent entre corchetes.

Conclusión

JADEPUFFER es una señal de advertencia y un marcador de hacia dónde se dirige el oficio de extorsión. Un agente autónomo razonó sobre sus objetivos, recopiló y reutilizó credenciales, se movió lateralmente, estableció persistencia y destruyó una base de datos, narrando su propia intención durante todo el proceso. Ninguna de las técnicas individuales fue novedosa o sofisticada. Lo notable es que un modelo de IA las encadenó en una operación de ransomware completa contra infraestructura descuidada expuesta a internet. El umbral de habilidad para ejecutar ransomware ha caído hasta lo que cuesta ejecutar un agente, y si ese agente opera con credenciales robadas a través de LLMjacking, el coste para un atacante es cercano a cero. Los defensores deben esperar que el volumen y la amplitud de tales campañas aumenten a medida que las herramientas agénticas maduren, y deben tratar los servidores de aplicaciones expuestos, los almacenes de configuración sin endurecer y las cuentas de administración de bases de datos orientadas a internet como las primeras superficies que serán atacadas.