
Los investigadores de Sysdig vincularon un segundo ataque en el mismo servidor Langflow con JADEPUFFER, un operador impulsado por un agente de inteligencia artificial que registraron por primera vez a principios de este mes.
Se descubrió que el mismo operador implementaba ENCFORGE, un nuevo ransomware Go compilado diseñado para cifrar pesos de modelos, índices vectoriales, conjuntos de datos de entrenamiento y otros archivos de infraestructura de IA en sistemas de archivos host.
El punto de entrada se mantuvo sin cambios. Las versiones de Langflow anteriores a la 1.3.0 exponen el punto final /api/v1/validate/code sin autenticación, permitiendo a atacantes remotos ejecutar Python de su elección en el servidor. Esta falla, CVE-2025-3248, tiene una puntuación CVSS de 9,8 y figura en el Catálogo de vulnerabilidades conocidas y explotadas de CISA desde el 5 de mayo de 2025.
Como informó The Hacker News a principios de este mes, la operación anterior utilizó código Python desechable y la función AES_ENCRYPT() de MySQL para cifrar y destruir datos en Nacos (el servidor de configuración de Alibaba) y las bases de datos de producción.
La nueva carga útil ENCFORGE reemplaza estos scripts improvisados con herramientas compiladas que apuntan a las tiendas de modelos, bases de datos vectoriales y canales de capacitación que se buscaron en busca de credenciales en la primera campaña.
Carga útil ENCFORGE
Los investigadores obtuvieron los binarios de los servidores de comando y control del atacante. Este binario estaba oculto como /.lockd. Una solicitud directa a /lockd devuelve un 404 y el punto inicial lo excluye de los listados de directorios simples. Este archivo es un ELF estático Go 1.22.12 empaquetado con UPX 5.20.
En el momento del análisis de Sysdig, la plataforma de inteligencia de amenazas no arrojó detecciones ni de hashes empaquetados ni desempaquetados. El nombre interno del proyecto es encfile. El texto de error en el binario hace referencia a una herramienta de generación de claves complementaria llamada keyforge. Ambas cadenas sobreviven a compilaciones del mismo código base y actúan como anclajes de descubrimiento estables.
La lista de extensiones predeterminada incluye puntos de control de PyTorch y TensorFlow, Hugging Face SafeTensors, formato de intercambio ONNX, GGUF (el estándar actual para LLM implementados localmente) y su predecesor GGML, índices vectoriales FAISS, conjuntos de datos de entrenamiento Parquet y Arrow, matrices NumPy y registros TensorFlow.
El indicador –include permite al operador agregar archivos globales adicionales. El texto de ayuda incorporado utiliza el adaptador de ajuste LoRA y los pesos GGML clásicos como ejemplos. La lista completa contiene aproximadamente 180 extensiones. Estos ejemplos ilustran directamente el entorno de la IA. En un armario de archivos típico, hay pocas razones para nombrar adaptadores LoRA o pesas GGML tradicionales. Los investigadores interpretan esta selección como una cobertura intencional y no accidental.
ENCFORGE utiliza AES-256-CTR para datos de archivos y la clave simétrica por ejecución está incluida en una clave pública RSA-2048 integrada compilada en esta compilación. Cifre áreas seleccionadas en lugar de cifrar todo el archivo. Esta es la misma optimización de velocidad utilizada por los casilleros de clase LockBit y BlackCat.
Cada archivo procesado cambia de nombre con una extensión .locked. El binario elimina los procesos que tienen archivos abiertos antes de cifrarlos, maneja los reinicios sin volver a cifrar los archivos completados, coloca notas de rescate como README, HOW_TO_DECRYPT y README_DECRYPT, y se elimina a sí mismo después de la ejecución.

Los archivos binarios de ENCFORGE recuperados no tienen capacidades de extracción. No incluye código de red, clientes de almacenamiento en la nube ni mecanismos de preparación, y los investigadores no encontraron evidencia de filtración de datos, sitios filtrados o portales de pago Tor durante las sesiones que observaron. El único uso son datos cifrados.
El contacto de extorsión incluido en la nota de rescate es e78393397@proton.me, la misma dirección de Proton Mail utilizada en campañas anteriores. Sysdig describe esto como el vínculo de atribución más fuerte entre las dos operaciones.
Los investigadores revelaron una de las sesiones observadas, pero no nombraron la organización, ni proporcionaron el número de víctimas ni pruebas de otro despliegue de ENCFORGE.
Langflow como anfitrión
Después de verificar la ejecución del código, JADEPUFFER busca credenciales en el contenedor y encuentra un socket Docker en /var/run/docker.sock. El primer intento de recuperar ENCFORGE del servidor de comando y control de GCP falló. En lugar de parar, nos adaptamos.
El operador pasó 5 minutos y 24 segundos escribiendo y modificando seis scripts de Python a través del mismo canal Langflow RCE hasta que se estableció una ruta válida al host. El script inicial se creó línea por línea, manteniendo las solicitudes individuales inertes a la inspección basada en firmas.
A partir del segundo, el operador codificó en Base64 cada script completo y lo decodificó dentro de la llamada exec() para evitar búsquedas a nivel de shell de comandos como base64 -d. En la versión final, utilizamos la API de Docker para activar un contenedor privilegiado con el espacio de nombres PID del host y el sistema de archivos raíz montados, identificar el proceso de destino, copiar ENCFORGE a través de /proc//root y ejecutarlo en el host a través de nsenter.
En todas las iteraciones, los contenedores se crearon con Privileged: true, PidMode: host, NetworkMode: host y lectura/escritura montada en enlace para el sistema de archivos raíz. Esa es la raíz del anfitrión.
Antes de una ejecución en vivo, el operador lanzó –try-run para escanear el sistema de archivos y luego lanzó –lock para obtener la ruta de cifrado en vivo. El script final verificó el estado del proceso, leyó el registro de bloqueo y contó los archivos que terminaban en .locked.
Los investigadores no publicaron el número de resultados. La evidencia revelada demuestra los intentos de cifrado reales, no la cantidad de archivos de modelo o conjunto de datos que se cifraron con éxito.
Sysdig evaluó el indicador –task-id gcp_h1 como evidencia de que el operador está rastreando este host como un objetivo de GCP dentro de una campaña más amplia. La ejecución de prueba anterior en la sesión utilizó el ID de tarea gcp_test. El informe no revela nuevas víctimas ni lugares de despliegue.
Los investigadores documentaron una campaña anterior de JADEPUFFER que solucionó un inicio de sesión fallido en Nacos en 31 segundos. El mismo patrón se aplica a problemas más difíciles. Los operadores crearon conexiones de host a través de sockets Docker expuestos cuando se bloquearon las rutas de entrega preferidas.
Parche Langflow para proteger su modelo
Los investigadores estiman que la reconstrucción de modelos de IA de producción cifrados puede costar entre 75 000 y 500 000 dólares por modelo en tiempo de ingeniería y computación de GPU en la nube.
En entornos de producción, a menudo se ejecutan múltiples variantes especializadas en almacenamiento compartido, por lo que una sola ejecución de ENCFORGE puede cifrar múltiples variantes almacenadas en el mismo sistema de archivos accesible. Si los datos de capacitación están en el mismo host, la organización debe reconstruir los datos antes de iniciar el reentrenamiento.
SHA-256 binario: empaquetado 8cb0c223b018cecef1d990ec81c67b826eb3c30d54f06193cf69969e9a8baea2;Descomprimir ea7822eac6cecef7746c606b862b4d3034856caf754c4cf69533662637905328.
Sysdig publicó las direcciones fuente y C2, las huellas digitales clave RSA-2048 integradas y las reglas YARA en el informe completo.
Actualice Langflow a 1.9.1 o la versión actualmente compatible. La versión 1.3.0 cerró el vector de intrusión para esta campaña, CVE-2025-3248, pero desde entonces CISA ha agregado dos vulnerabilidades Langflow más al catálogo KEV. CVE-2026-33017 es una falla de RCE no autenticada corregida en 1.9.0 y agregada a KEV el 25 de marzo de 2026. CVE-2026-55255, una omisión de autenticación entre usuarios corregida en 1.9.1, se agregó el 7 de julio de 2026. Rote las claves del proveedor de IA, las credenciales de la nube, los secretos de la base de datos y otros tokens que tienen acceso a los procesos de Langflow. La aplicación del parche no revoca las credenciales ya recopiladas a través de la instancia vulnerable. Elimine /var/run/docker.sock de los contenedores que no necesita. Si el acceso al socket es inevitable, alcance el acceso a través de un proxy de configuración limitada. Las implementaciones estándar de Langflow generalmente no requieren la creación de contenedores, y el acceso sin restricciones al socket Docker debe tratarse como una configuración incorrecta. Alertas para procesos de aplicaciones que llaman a la API de creación de contenedores Docker, contenedores iniciados con Privileged: true o PidMode: host, vinculan montajes de host y raíz, y ejecutan nsenter desde dentro de un contenedor. Mantenga los pesos de los modelos, los índices vectoriales y los conjuntos de datos de entrenamiento fuera de línea o en instantáneas inmutables. Supervise estos directorios para detectar una gran cantidad de archivos .locked.
Hacker News contactó al equipo de investigación de amenazas de Sysdig para obtener más información sobre el alcance de la campaña Fleet y la confiabilidad de la atribución. Sysdig no ha respondido públicamente.
Los artefactos del modelo ahora pertenecen a la misma capa de recuperación que el código fuente y la base de datos de producción. Las organizaciones que pueden reconstruir sus aplicaciones pero no pueden restaurar sus pesos, índices y estado de entrenamiento no tienen un camino limpio de regreso.
Source link
