
Mecanismo de detecção de alta fidelidade para node2shell (CVE-2026-111497)
Uma ferramenta de linha de comando para detectar a CVE-2026-111497 em aplicações HTTP Node.js.
O scanner envia quatro controles de um byte para descobrir como o endpoint lida com JSON Brotli válido, Brotli malformado, requisições sem um content type JSON e codificações não suportadas. Em seguida, ele transmite uma sonda Brotli de 23.068.764 bytes e repete o controle válido.
Um alvo é reportado como vulnerável apenas quando a sonda completa atinge a classe de resposta válida da rota, a classe de resposta malformada é distinta e o controle final confirma que o endpoint permaneceu estável. Isso corresponde à lógica de detecção interna do postmodule da Assetnote e não executa nenhum comando.
O caminho da URL é preservado e o padrão é /. Redirecionamentos não são seguidos.
Cada endpoint testado recebe cinco requisições de um byte e uma sonda de 23.068.764 bytes. A sonda usa Expect: 100-continue, de modo que um proxy pode rejeitar o tamanho anunciado antes que o corpo seja enviado.
pip install -r requirements.txt
docker build -t node2shell-scanner .
docker run --rm node2shell-scanner -u https://example.com/api
python3 scanner.py -u https://example.com/api
python3 scanner.py -l hosts.txt -t 20 -o results.json
python3 scanner.py -u https://example.com --path /api/json
python3 scanner.py -u https://example.com -H "Authorization: Bearer token"
-u, --url URL única a verificar
-l, --list Arquivo contendo hosts (um por linha)
-t, --threads Número de threads concorrentes (padrão: 10)
--timeout Timeout por requisição em segundos (padrão: 60)
-o, --output Arquivo de saída para resultados (JSON)
--all-results Salva todos os resultados, não apenas hosts vulneráveis
-k, --insecure Desativa a verificação de certificado TLS
-H, --header Cabeçalho personalizado (pode ser usado várias vezes)
-v, --verbose Mostra os motivos do veredito e trechos das respostas
-q, --quiet Exibe apenas hosts vulneráveis
--no-color Desativa a saída colorida
--path Caminho personalizado a testar (pode ser usado várias vezes)
--path-file Arquivo contendo caminhos a testar (um por linha)
Os resultados são impressos no terminal. Com -o, os hosts vulneráveis são salvos em JSON com o modo de comparação e evidências de requisição/resposta com dados sensíveis ocultados. Use --all-results para salvar todos os vereditos.
Desenvolvido pela Assetnote Security Research Team usando a lógica de detecção criada para a Searchlight's Exposure Platform.