
Uma campanha ativa explora a CVE-2025-3248 no Langflow para executar código arbitrário, realizar escape de container via Docker socket e criptografar artefatos de inteligência artificial usando um novo payload em Go.
| Componente | Langflow (versões anteriores a 1.3.0), Docker socket, binário ENCFORGE (Go 1.22.12) |
| Vetor | Execução remota de código (RCE) não autenticada via endpoint /api/v1/validate/code; escape de container através do socket Docker exposto; execução de binário malicioso no host. |
| Impacto | Criptografia direcionada de pesos de modelos (model weights), índices vetoriais, datasets de treinamento e arquivos de notebooks; custo de reconstrução estimado entre 75.000 e 500.000 dólares por modelo. |
| Prioridade | Atualização imediata do Langflow para versão 1.9.1 ou superior; remoção do acesso ao socket Docker em containers; rotação de credenciais de nuvem e provedores de IA. |
Pesquisadores identificaram uma nova evolução nas atividades do operador de ameaças conhecido como JADEPUFFER, caracterizado pelo uso de agentes automatizados para conduzir ataques cibernéticos. Após um ataque anterior documentado no início do mês, que utilizava scripts Python improvisados para destruição de dados em servidores Nacos e bancos de dados, o mesmo ator retornou ao mesmo servidor Langflow comprometido. Dessa vez, a operação empregou o ENCFORGE, um novo ransomware compilado na linguagem Go, projetado especificamente para sequestrar ativos de inteligência artificial. O ponto de entrada inicial permaneceu inalterado, explorando uma vulnerabilidade crítica de execução remota de código presente em versões desatualizadas do Langflow.
O ENCFORGE difere dos criptografadores de arquivos tradicionais por seu foco cirúrgico em infraestruturas de IA. Em vez de direcionar documentos de escritório ou bancos de dados gerais, o payload visa formatos como SafeTensors do Hugging Face, checkpoints do TensorFlow e PyTorch, arquivos GGUF (usados localmente por LLMs) e índices FAISS. O ataque destaca não apenas a vulnerabilidade do software orquestrador de fluxos (Langflow), mas também a falta de isolamento adequado em ambientes de desenvolvimento de IA, onde o acesso ao socket Docker permitiu que o adversário transpusesse as barreiras do container e afetasse o sistema operacional hospedeiro. A ausência de capacidades de exfiltração no binário recuperado sugere que o modelo de extorsão baseia-se puramente na indisponibilidade dos modelos de machine learning e no alto custo computacional para sua recuperação.
A cadeia de ataque inicia-se explorando a CVE-2025-3248, uma falha com pontuação CVSS 9.8 que afeta o Langflow anterior à versão 1.3.0. O endpoint /api/v1/validate/code não exige autenticação e permite a injeção de código Python arbitráriamente. Uma vez estabelecida a execução remota de código (RCE), o operador JADEPUFFER conduziu uma varredura no sistema de arquivos do container em busca de credenciais. Durante esse reconhecimento, o ator identificou a presença do socket do Docker montado em /var/run/docker.sock. A tentativa inicial de baixar o payload ENCFORGE diretamente de um servidor de comando e controle (C2) hospedado na Google Cloud Platform (GCP) falhou.
Diante da falha na entrega inicial, o operador demonstrou comportamento adaptativo, refinando a tática ao vivo em intervalos curtos. Ao longo de aproximadamente cinco minutos, seis scripts Python foram construídos e revisados iterativamente através do canal RCE do Langflow. Para evadir detecções baseadas em assinatura de linha de comando, o ator evitou o uso direto de utilitários de shell como comando operacional omitido, optando por codificar cada script completo em base64 e decodificá-lo internamente via chamada exec(). A versão final do script utilizou a API do Docker para lançar um container privilegiado com o namespace de PID do host (PidMode: host) e o sistema de arquivos raiz montado com permissão de leitura e escrita. O payload foi então copiado para dentro do container, transferido para o diretório /root do host via montagens proc, e executado no sistema hospedeiro utilizando nsenter.
O binário recuperado, disfarçado como /.lockd no servidor C2 (com um ponto prefixado para ocultá-lo em listagens de diretório), é um executável ELF estático escrito em Go 1.22.12 e empacotado com UPX 5.20. Análises de telemetria indicaram que, no momento da análise, nem o hash empacotado nem o desempacotado eram detectados por plataformas de inteligência de ameaças. Strings internas do binário revelam o nome do projeto como encfile e mencionam uma ferramenta complementar geradora de chaves chamada keyforge. O ransomware utiliza uma lista predefinida de aproximadamente 180 extensões de arquivo, fortemente focada em ecossistemas de Machine Learning, incluindo .pt (PyTorch), .pb (TensorFlow), .onnx, .gguf, .ggml, .faiss, .parquet, .arrow e arquivos de registros do NumPy.
O mecanismo de criptografia emprega AES-256-CTR para os dados dos arquivos, com uma chave simétrica gerada por execução, encapsulada por uma chave pública RSA-2048 embutida na compilação do binário. Seguindo uma otimização de velocidade semelhante à de famílias de ransomware como LockBit e BlackCat, o ENCFORGE criptografa apenas regiões selecionadas dos arquivos em vez de todo o conteúdo, acelerando o processo em grandes conjuntos de dados. O binário encerra processos que mantêm os arquivos abertos para garantir o bloqueio, renomeia cada arquivo processado com a extensão .locked e deposita notas de resgate com nomes como README, HOW_TO_DECRYPT e README_DECRYPT. Após a execução, o malware se autodeleta. Não foram observadas capacidades de rede, exfiltração de dados ou mecanismos de staging no código, indicando que a alavanca de ataque é estritamente a negação de acesso aos ativos digitais.
A vulnerabilidade primária afeta implantações do Langflow que não foram atualizadas para a versão 1.3.0 ou posteriores, especificamente aquelas expostas à internet sem autenticação adequada no endpoint de validação. No entanto, o impacto é ampliado significativamente por configurações inseguras de containerização. A presença do /var/run/docker.sock montado dentro do container da aplicação permitiu o escape para o host. Ambientes que utilizam orquestração de IA com Docker, onde o processo de aplicação tem permissão para gerenciar o ciclo de vida de outros containers, estão sob risco crítico. Além disso, qualquer diretório acessível pelo sistema de arquivos que armazene artefatos de IA é um alvo potencial para a criptografia.
É crucial notar que a Agência de Segurança Cibernética e de Infraestrutura (CISA) adicionou vulnerabilidades relacionadas ao Langflow ao seu catálogo de Vulnerabilidades Exploradas Conhecidas (KEV). Além da CVE-2025-3248, as CVEs CVE-2026-33017 e CVE-2026-55255, que também permitem RCE e bypass de autorização, foram incluídas posteriormente e exigem atualizações para versões 1.9.0 e 1.9.1, respectivamente. Organizações que executam variantes de modelos múltiplos em armazenamento compartilhado ou que mantêm dados de treinamento no mesmo host dos ambientes de execução enfrentam o risco de perda simultânea de modelos e dos dados necessários para seu retreinamento, multiplicando o impacto operacional e financeiro.
- Instalações do Langflow anteriores à versão 1.3.0, especialmente as expostas publicamente.
- Containers com acesso de leitura e escrita ao socket do Docker (/var/run/docker.sock).
- Sistemas de arquivos contendo repositórios de modelos (Hugging Face, PyTorch, TensorFlow), índices vetoriais (FAISS) e datasets (Parquet, Arrow).
- Ambientes de nuvem (GCP, AWS, Azure) onde as credenciais de acesso são acessíveis pelo processo comprometido.
As equipes de segurança devem priorizar a detecção de tentativas de exploração contra o endpoint /api/v1/validate/code em servidores Langflow, buscando por requisições HTTP POST contendo código Python malicioso. No nível de orquestração de containers, é vital monitorar o acesso ao socket do Docker por processos não autorizados. Alertas devem ser configurados para criação de containers com parâmetros de risco elevado, como Privileged: true, PidMode: host ou NetworkMode: host. O uso do comando nsenter originando de dentro de um container é um indicador forte de tentativa de execução de código no sistema hospedeiro.
No nível de arquivo e endpoint, a varredura deve procurar pela criação em massa de arquivos com a extensão .locked em diretórios conhecidos por armazenar ativos de IA. A presença de arquivos de nota de resgate (README_DECRYPT, HOW_TO_DECRYPT) também serve como indicador de comprometimento (IoC). Verificações de integridade de binários e o monitoramento de processos desconhecidos tentando acessar portas ou soquetes de orquestração podem revelar a fase inicial da atividade do operador JADEPUFFER. Logs de auditoria do Docker devem ser analisados em busca de comandos de montagem de volumes do host (/:/host) dentro de containers recém-criados.
Os hashes SHA-256 do binário identificado (empacotado e desempacotado) podem ser usados para varreduras retrospectivas em ambientes de endpoint e nuvem, embora a detecção comportamental seja preferível devido à facilidade de recompilação de binários em Go.
- Requisições não autenticadas para
/api/v1/validate/codecarregando payloads Python. - Criação de containers com o sistema de arquivos raiz do host montado em modo RW.
- Processos usando
nsenterpara entrar em namespaces do host a partir de containers. - Aparição súbita de arquivos com extensão
.lockedem diretórios de modelos de IA.
A ação corretiva imediata é atualizar a instalação do Langflow para a versão mais recente suportada (pelo menos 1.9.1 ou superior), o que corrige a CVE-2025-3248 e outras falhas críticas subsequentes adicionadas ao catálogo KEV da CISA. No entanto, apenas a aplicação de patch não é suficiente, pois o acesso anterior já pode ter comprometido credenciais. É imperativo realizar a rotação imediata de chaves de provedores de IA, credenciais de nuvem, segredos de banco de dados e Tokens que eram acessíveis pelo processo do Langflow antes da atualização.
Para fortalecer a postura de segurança, o acesso ao /var/run/docker.sock deve ser removido de qualquer container que não o requisite estritamente. Em casos onde o acesso seja inevitável, ele deve ser restrito através de proxies configurados de forma restrita, e o uso de containers privilegiados deve ser proibido por políticas de segurança. A implementação de snapshots imutáveis ou offline para pesos de modelos, índices vetoriais e datasets de treinamento serve como uma última linha de defesa, permitindo a restauração rápida desses ativos críticos sem a necessidade de pagar resgate ou reiniciar o treinamento do zero.
- Atualizar o Langflow para a versão 1.9.1 ou posterior para mitigar CVEs conhecidas (CVE-2025-3248, CVE-2026-33017, CVE-2026-55255).
- Revogar e rotacionar todas as credenciais e tokens de API acessíveis pelo ambiente comprometido.
- Remover a montagem do
docker.sockem containers de aplicação e restringir permissões de criação de containers. - Implementar backup imutável para artefatos de IA e monitorar tentativas de criptografia em massa.
0 Comentários