CVE-2026-111497: Falha Crítica Node2Shell no Decodificador Brotli do Node.js
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Node2Shell é uma vulnerabilidade crítica (CVE-2026-111497) que afeta o decodificador Brotli integrado ao Node.js e é causada por uma escrita fora dos limites. Os atacantes podem explorar a falha fornecendo fluxos comprimidos malformados para serviços que processam dados Brotli, resultando potencialmente em negação de serviço, divulgação de memória ou execução remota de código. A vulnerabilidade apresenta um risco particular para serviços que utilizam Express 5 ou middleware que automaticamente realiza a descompressão de Brotli.
Investigação
A Equipe de Pesquisa de Ameaças da Sysdig analisou a vulnerabilidade e relatou que um PoC público surgiu poucas horas após o lançamento do patch. Pesquisa realizada pela Imperva e Vercel demonstrou que a execução de código é possível em arquiteturas específicas, incluindo Linux arm64. A investigação mostrou que a explorabilidade depende de se uma aplicação ou suas bibliotecas, como body-parser, processam fluxos Brotli controlados por atacantes.
Mitigação
A mitigação primária é atualizar o Node.js para as versões 22.23.4, 24.22.1 ou 26.12.1 e atualizar o Bun para a versão 1.4.4 ou superior. As organizações também devem desativar a descompressão de requisições quando possível, incluindo a configuração inflate: false no body-parser. Implementar regras de WAF para rejeitar Content-Encoding: br requisições não confiáveis e executar serviços sob contas sem privilégios fornecem camadas adicionais de defesa.
Resposta
Se uma cadeia potencial de exploração for detectada, como uma falha de processo do Node.js seguida de uma execução de programa inesperada, as equipes de segurança devem imediatamente isolar a carga de trabalho afetada. Monitore atividades pós-exploração, incluindo shells interativos, downloads não autorizados de malware, mineração de criptomoedas ou roubo de segredos e tokens de nuvem. Corrigir todos os serviços vulneráveis acessíveis deve ser a prioridade máxima.
Fluxo de Ataque
Ainda estamos atualizando esta parte.
Detecções
Processos Filhos do NodeJS Suspeitos [Windows] (via cmdline)
Shell Suspeito via Servidor Web [Linux] (via process_creation)
Processos Filhos do NodeJS Suspeitos [Linux] (via cmdline)
Detecção de Falha de Processo do Node.js Seguido por Execução de Programa no Local – Exploração Node2Shell [Criação de Processo Linux]
Execução de Simulação
-
Narrativa do Ataque & Comandos: O adversário alveja uma aplicação web executando Node.js. Eles enviam um payload malicioso comprimido com Brotli que desencadeia um erro de corrupção de memória, causando o
processo nodea falhar. Imediatamente após a falha, o atacante utiliza o fluxo de execução sequestrado para gerar um/bin/bashshell para estabelecer persistência e iniciar o reconhecimento local. Esta sequência de umprocesso nodeevento seguido por/bin/bashexecução é projetada para corresponder àseleção_erroandseleção_execução_suspeitalógica da regra de detecção. -
Script de Teste de Regressão:
#!/bin/bash # Simulação de padrão de exploração do estilo Node2Shell echo "[+] Iniciando simulação Node2Shell..." # 1. Simular um processo Node.js que 'falha' ou é encerrado abruptamente # Em um cenário real, isso é uma falha. Aqui simulamos a telemetria # de um processo node sendo invocado/manipulado. node -e "process.exit(1)" echo "[+] Processo Node.js 'falhou' (Código de Saída 1)." # 2. Simular a execução imediata de um shell suspeito # Isso imita o payload acionando o shell após a falha. /bin/bash -c "echo 'Exploitation Successful: Shell Spawned'" echo "[+] Simulação completa. Verifique SIEM para detecção." -
Comandos de Limpeza:
# Nenhum arquivo persistente foi criado por esta simulação. # Simplesmente assegure que nenhum processo bash desonesto esteja em execução. pkill -f "Exploitation Successful"