Novo ransomware ENCFORGE mira arquivos de modelos de IA em ataque RCE ao Langflow
21 de Julho de 2026

Pesquisadores da Sysdig associaram um segundo ataque ao mesmo servidor Langflow ao JADEPUFFER, o operador guiado por agente de IA que a empresa já havia documentado no início deste mês.

Agora, esse mesmo operador foi flagrado implantando o ENCFORGE, um novo ransomware escrito em Go, criado para criptografar pesos de modelos, índices vetoriais, conjuntos de dados de treinamento e outros arquivos da infraestrutura de IA no sistema de arquivos do host.

O ponto de entrada não mudou.

Versões do Langflow anteriores à 1.3.0 expõem o endpoint /api/v1/validate/code sem autenticação, permitindo que qualquer atacante remoto execute Python arbitrário no servidor.

A falha, identificada como CVE-2025-3248 , tem CVSS 9,8 e está no catálogo Known Exploited Vulnerabilities da CISA desde 5 de maio de 2025.

Como o The Hacker News noticiou no início deste mês, a operação anterior usou código Python descartável e a função AES_ENCRYPT() do MySQL para criptografar e destruir dados no Nacos, servidor de configuração da Alibaba, e em bancos de dados de produção.

O novo payload ENCFORGE substitui esses scripts improvisados por ferramentas compiladas voltadas para os repositórios de modelos, bancos de dados vetoriais e pipelines de treinamento que a primeira campanha já havia vasculhado em busca de credenciais.

### O payload ENCFORGE

Os pesquisadores recuperaram o binário no servidor de comando e controle do atacante, onde ele estava oculto como /.lockd.

Uma solicitação direta para /lockd retorna 404, e o ponto no início do nome impede que ele apareça em uma listagem simples de diretório.

O arquivo é um ELF estático compilado com Go 1.22.12 e empacotado com UPX 5.20.

As plataformas de inteligência de ameaças não indicavam detecções nem para o hash empacotado nem para o desempaquetado no momento da análise da Sysdig.

O nome interno do projeto é encfile, e a mensagem de erro do binário faz referência a uma ferramenta complementar de geração de chaves chamada keyforge.

As duas strings sobrevivem à recompilação do mesmo código e servem como pontos estáveis de detecção.

A lista padrão de extensões cobre checkpoints de PyTorch e TensorFlow, o formato SafeTensors da Hugging Face, o formato de intercâmbio ONNX, GGUF, o padrão atual para LLMs implantados localmente, e seu antecessor GGML, índices vetoriais FAISS, conjuntos de dados de treinamento em Parquet e Arrow, matrizes NumPy e registros do TensorFlow.

Um argumento --include permite ao operador acrescentar outros padrões de arquivos.

A ajuda integrada usa adaptadores de fine-tuning LoRA e pesos legados em GGML como exemplos.

A lista completa soma cerca de 180 extensões.

Esses exemplos apontam diretamente para ambientes de IA.

Um bloqueador genérico de arquivos não teria motivo para citar adaptadores LoRA ou pesos legados em GGML.

Para os pesquisadores, isso indica um alvo deliberado, e não cobertura incidental.

O ENCFORGE usa AES-256-CTR para os dados dos arquivos, com a chave simétrica gerada em cada execução protegida por uma chave pública RSA-2048 embutida nessa compilação.

Em vez de criptografar arquivos inteiros, ele cifra regiões selecionadas, a mesma otimização de velocidade usada por lockers da linha LockBit e BlackCat.

Cada arquivo processado recebe a extensão .locked.

O binário encerra processos que mantêm arquivos abertos antes de criptografá-los, lida com reinícios sem criptografar novamente arquivos já concluídos, deposita notas de resgate como README, HOW_TO_DECRYPT e README_DECRYPT, e se remove após a execução.

O binário ENCFORGE recuperado não tem capacidade de exfiltração.

Ele não traz código de rede, cliente de armazenamento em nuvem ou mecanismo de preparação de dados, e os pesquisadores não encontraram evidências de exfiltração de dados, site de vazamento ou portal de pagamento na rede Tor durante a sessão observada.

Sua única alavanca são os dados criptografados.

O contato de extorsão embutido nas notas de resgate é [email protected], o mesmo endereço Proton Mail usado na campanha anterior.

A Sysdig descreve isso como o elo de atribuição mais forte entre as duas operações.

Os pesquisadores divulgaram uma sessão observada, não nomearam a organização e não informaram número de vítimas nem evidências de outra implantação do ENCFORGE.

### Do Langflow ao host

Depois de confirmar a execução de código, o JADEPUFFER vasculhou o container em busca de credenciais e encontrou o socket do Docker em /var/run/docker.sock.

A primeira tentativa de baixar o ENCFORGE do servidor de comando e controle no GCP falhou.

Em vez de parar, o operador se adaptou.

Ao longo de 5 minutos e 24 segundos, o operador criou e revisou seis scripts em Python pelo mesmo canal de RCE do Langflow até encontrar um caminho funcional para o host.

O primeiro script foi montado linha por linha, mantendo cada solicitação inerte para inspeção por mecanismos baseados em assinaturas.

A partir do segundo, o operador codificou cada script completo em base64 e o decodificou dentro de uma chamada exec(), evitando buscas em nível de shell por comandos como base64 -d.

A versão final usou a API do Docker para iniciar um container privilegiado com o namespace de PID do host e o sistema de arquivos raiz montado.

Em seguida, localizou o processo alvo, copiou o ENCFORGE por meio de /proc/<pid>/root e o executou no host via nsenter.

Em todas as iterações, os containers foram criados com Privileged: true, PidMode: host, NetworkMode: host e o sistema de arquivos raiz montado com leitura e gravação.

Isso é acesso root ao host.

Antes da execução em ambiente real, o operador rodou --try-run para varrer o sistema de arquivos e depois --lock para a fase de criptografia.

O script final verificou o status do processo, leu o log de bloqueio e contou os arquivos terminados em .locked.

Os pesquisadores não publicaram a contagem resultante.

As evidências divulgadas estabelecem uma tentativa real de criptografia, não quantos arquivos de modelo ou de conjunto de dados foram de fato criptografados.

A Sysdig avaliou a flag --task-id gcp_h1 como evidência de que o operador estava tratando esse host como alvo no GCP dentro de uma campanha mais ampla.

Um try-run anterior na sessão usou o ID de tarefa gcp_test.

O relatório não trouxe outras vítimas nem locais adicionais de implantação.

Os pesquisadores documentaram a campanha anterior do JADEPUFFER corrigindo uma tentativa de login malsucedida no Nacos em 31 segundos.

Aqui, o padrão se repetiu diante de um problema mais difícil.

Quando o caminho preferido de entrega foi bloqueado, o operador construiu uma evasão do host por meio do socket exposto do Docker.

### Corrija o Langflow e depois proteja os modelos

Os pesquisadores estimam que reconstruir um modelo de IA de produção depois que ele é criptografado pode custar entre US$ 75.000 e US$ 500.000 por modelo, considerando computação em GPU na nuvem e horas de engenharia.

Ambientes de produção costumam executar várias variantes especializadas em armazenamento compartilhado, então uma única execução do ENCFORGE pode criptografar múltiplas variantes armazenadas no mesmo sistema de arquivos acessível.

Se os dados de treinamento estiverem no mesmo host, a organização precisa reconstruí-los antes de iniciar qualquer novo treinamento.

Hash SHA-256 do binário: empacotado 8cb0c223b018cecef1d990ec81c67b826eb3c30d54f06193cf69969e9a8baea2; desempaquetado ea7822eac6cecef7746c606b862b4d3034856caf754c4cf69533662637905328.

A Sysdig publicou o código-fonte e os endereços de C2, a impressão digital da chave pública RSA-2048 embutida e uma regra YARA em seu relatório completo.

Atualize o Langflow para 1.9.1 ou para uma versão suportada mais recente.

A versão 1.3.0 corrigiu a CVE-2025-3248 , vetor de entrada desta campanha, mas a CISA adicionou duas outras vulnerabilidades do Langflow ao catálogo KEV: CVE-2026-33017 , uma falha de RCE sem autenticação corrigida na 1.9.0 e incluída no KEV em 25 de março de 2026, e CVE-2026-55255 , uma falha de bypass de autorização entre usuários corrigida na 1.9.1 e adicionada em 7 de julho de 2026.

Gire chaves de provedores de IA, credenciais de cloud, segredos de banco de dados e quaisquer outros tokens acessíveis ao processo do Langflow.

Corrigir a falha não revoga credenciais já coletadas por meio de uma instância vulnerável.

Remova /var/run/docker.sock de qualquer container que não precise dele.

Quando o acesso ao socket for inevitável, restrinja-o por meio de um proxy configurado de forma estrita.

Uma implantação padrão do Langflow geralmente não precisa criar containers, e o acesso irrestrito ao socket do Docker deve ser tratado como erro de configuração.

Gere alertas para processos de aplicação que chamem APIs de criação de containers do Docker, containers iniciados com Privileged: true ou PidMode: host, bind mounts do root do host e execução de nsenter a partir de dentro de um container.

Mantenha pesos de modelos, índices vetoriais e conjuntos de dados de treinamento em snapshots offline ou imutáveis.

Monitore esses diretórios em busca de criação em massa de arquivos com a extensão .locked.

Os artefatos dos modelos agora devem ser tratados na mesma camada de recuperação que o código-fonte e os bancos de dados de produção.

Uma organização que consegue reconstruir a aplicação, mas não restaurar seus pesos, índices ou estado de treinamento, não tem um caminho limpo de volta.

Publicidade

Proteja sua empresa contra hackers através de um Pentest

Tenha acesso aos melhores hackers éticos do mercado através de um serviço personalizado, especializado e adaptado para o seu negócio. Guardsi: qualidade, confiança e especialidade em segurança ofensiva de quem já protegeu centenas de empresas. Saiba mais...