
CVE-2026-42945 Ferramenta de varredura e verificação de vulnerabilidade de estouro de heap do NGINX
NGINX Rift é uma ferramenta de código aberto de varredura e verificação para CVE-2026-42945 e CVE-2026-9256 (vulnerabilidade de estouro de heap no ngx_http_rewrite_module do NGINX). Suporta varredura remota de fingerprint de rede e auditoria local profunda de configuração, ajudando equipes de segurança a identificar rapidamente riscos potenciais em ambientes NGINX.
| Propriedade | Detalhes |
|---|---|
| ID CVE | CVE-2026-9256 |
| Tipo de vulnerabilidade | Estouro de buffer baseado em heap (Heap-based Buffer Overflow, CWE-122) |
| Componente afetado | NGINX ngx_http_rewrite_module |
| Versões afetadas | NGINX open source 0.1.17 ~ 1.31.0 (mainline) / 0.1.17 ~ 1.30.1 (stable) |
| Versões corrigidas | NGINX 1.31.1 (mainline) / 1.30.2 (stable), lançadas em 2026-05-22 |
| Nível de gravidade | Alta — pode causar negação de serviço (DoS) e, com o ASLR desabilitado, permitir execução remota de código (RCE) |
Condição de acionamento: A diretiva rewrite usa expressões regulares PCRE com capturas sobrepostas, e a string de substituição referencia vários grupos de captura sem nome.
| Propriedade | Detalhes |
|---|---|
| ID CVE | CVE-2026-42945 |
| Tipo de vulnerabilidade | Estouro de heap (Heap Overflow) |
| Componente afetado | NGINX ngx_http_rewrite_module |
| Versões afetadas | NGINX open source 0.6.27 ~ 1.30.0 / NGINX Plus R32 ~ R36 |
| Versões corrigidas | NGINX 1.30.1 (stable) / 1.31.0 (mainline) / NGINX Plus R32 P6+ |
| Nível de gravidade | Alta — pode causar negação de serviço (DoS) e execução remota de código (RCE) |
Condição de acionamento: A URL de substituição da diretiva rewrite contém simultaneamente ? e referências a grupos de captura sem nome (ex.: $1).
# CVE-2026-42945 触发配置: ? + $1
rewrite ^/api/(.*)$ /internal?id=$1 last;
# CVE-2026-9256 触发配置: 多个 $N 捕获引用
rewrite ^/(\w+)/(\d+)$ /$2/$1 last;
# 安全配置 (使用命名捕获组)
rewrite ^/api/(?<myid>.*)$ /internal?id=$myid last;
dpkg/rpm para detectar se a distribuição já corrigiu a vulnerabilidade por meio de backportrewrite-target em recursos Ingress do KubernetesBaixe o binário correspondente à sua plataforma na página de Releases.
git clone https://github.com/nu0l/NGINX-Rift.git
cd NGINX-Rift
# 单平台编译
go build -o nginx_rift_scanner nginx_rift_scanner.go
# 全平台交叉编译
chmod +x build.sh && ./build.sh
./nginx_rift_scanner -h
# 扫描单个目标
./nginx_rift_scanner scan -u http://example.com
# 批量扫描(从文件读取 URL 列表)
./nginx_rift_scanner scan -f url.txt
url.txt deve conter um URL por linha, por exemplo:
http://target1.com
https://target2.com
target3.com
# 自动查找默认 NGINX 配置路径
./nginx_rift_scanner verify
# 指定配置文件路径
./nginx_rift_scanner verify -p /etc/nginx/nginx.conf
O modo Verify executa uma auditoria em três etapas:
nginx -v para obter a versão e verifica os patches de backport do gerenciador de pacotes do SOinclude) para identificar regras de rewrite perigosaskubectl for detectado, varre automaticamente todos os recursos Ingress do cluster| Prioridade | Solução | Descrição |
|---|---|---|
| P0 | Atualizar o NGINX | Atualize para 1.30.2+ (stable) / 1.31.1+ (mainline) / a versão de segurança mais recente do NGINX Plus |
| P0 | Atualização pelo gerenciador de pacotes do SO | apt-get upgrade nginx ou yum update nginx |
| P1 | Mitigação urgente de configuração | Altere $1, $2, etc. nas regras de rewrite para grupos de captura nomeados $name, sem necessidade de parar o serviço |
| P2 | Correção do Ingress K8s | Atualize o Ingress Controller e altere a anotação rewrite-target |
| P3 | Defesa em profundidade | Configure server_tokens off; para ocultar o fingerprint da versão |
NGINX-Rift/
├── nginx_rift_scanner.go # 主程序源码
├── build.sh # 全平台交叉编译脚本
├── go.mod # Go 模块定义
└── README.md
net/http do Go para enviar requisições HTTP e analisar o cabeçalho de resposta Servernginx/X.Y.Z) e comercial (NGINX Plus RXX) por correspondência de expressões regularesinclude e usando um map visited para evitar referências circulares? + $N (CVE-2026-42945) e múltiplas referências $N (CVE-2026-9256)kubectl get ingress --all-namespaces -o yamldpkg-query/rpm --changelog para detectar patches de backport em nível de SO (pesquisando simultaneamente os dois IDs de CVE)CGO_ENABLED=0), gerando um binário independente sem dependência de CMIT License
Contribuição da comunidade de segurança.