
🛡️ Script to test for NGINX CVE-2026-42945
Organizações que executam NGINX Open Source, NGINX Plus, ou ingress/controllers baseados em NGINX devem verificar se são afetadas pelo CVE-2026-42945 e corrigir ou reconfigurar antes que tentativas de exploração atinjam os ambientes de produção.
Este repositório fornece um scanner somente leitura, não-exploit para uso defensivo autorizado em sistemas que você possui ou tem permissão para testar.
| Item | Detalhe |
|---|---|
| CVE | CVE-2026-42945 |
| Nome | NGINX Rift |
| Componente | ngx_http_rewrite_module (estouro de buffer heap) |
| Versões afetadas | NGINX Open Source 0.6.27 até 1.30.0 |
| Versões corrigidas | 1.30.1, 1.31.0 (+ backports dos fornecedores) |
| CVSS | 9.2 (Crítico) |
A exploração requer uma configuração de reescrita específica:
rewrite usando uma captura PCRE sem nome ($1, $2, …) na substituição?rewrite, if, ou set no mesmo escopo server/location usa essa capturaImpacto:
Ele não envia requisições de exploit elaboradas nem tenta derrubar workers.
cd nginx-cve-2026-42945
chmod +x scan_nginx_rift.py
# Best: run on each NGINX host with sudo
sudo python3 scan_nginx_rift.py --local
# Or scan a full config dump
sudo nginx -T 2>&1 | tee /tmp/nginx-full.txt
python3 scan_nginx_rift.py --local --config /tmp/nginx-full.txt
# Passive remote banner check (version only)
python3 scan_nginx_rift.py --url https://your-site.example/
# JSON for automation
python3 scan_nginx_rift.py --local --json --fail-on high
Código de saída 1 quando o risco for ALTO ou CRÍTICO (use --fail-on para ajustar portões de CI).
Atualize para NGINX 1.30.1 / 1.31.0+ ou seu pacote de segurança do SO/fornecedor.
Reinicie os workers após a atualização (systemctl restart nginx), não apenas reload.
Audite a configuração completa: sudo nginx -T e procure por regras de rewrite com $1/$2 e ?.
Mitigação temporária: use capturas nomeadas em vez de $1, $2:
# Vulnerable pattern (simplified)
rewrite ^/api/(.*)$ /internal?migrated=true;
set $original_path $1;
# Safer pattern
rewrite ^/api/(?<path>.*)$ /internal?migrated=true;
set $original_path $path;
Confirme que o ASLR permanece ativado no Linux (randomize_va_space=2).
Revise , Helm charts e configurações geradas — não apenas .
Use apenas em infraestrutura que você está autorizado a avaliar. Escaneamento não autorizado pode violar políticas ou leis.
| Verificação | Método |
|---|
| Versão | nginx -v local ou cabeçalho Server passivo |
| Gatilho de config | Análise heurística de nginx -T ou de um arquivo de configuração |
| ASLR (Linux) | /proc/sys/kernel/randomize_va_space |
| Orientação | Etapas de remediação priorizadas |
| Risco | Significado |
|---|
| CRÍTICO | Versão vulnerável + padrão de reescrita correspondente a gatilho conhecido |
| ALTO | Versão vulnerável e reescritas suspeitas, ou versão desconhecida com gatilho provável |
| MÉDIO | Versão vulnerável, nenhum gatilho encontrado na configuração escaneada (ainda corrija) |
| BAIXO | Versão corrigida, mas padrões de reescrita arriscados permanecem |
| INFO | Versão corrigida e nenhum padrão de gatilho na configuração escaneada |
/etc/nginx/nginx.conf