
Prova de conceito de exploit para CVE-2026-42945, um estouro de buffer no heap nas diretivas rewrite/set do NGINX, permitindo DoS e potencial RCE por meio de requisições maliciosas.
O CVE-2026-42945 é uma vulnerabilidade crítica de estouro de buffer no heap em servidores NGINX, conhecida como "NGINX Rift". A vulnerabilidade existe na lógica de processamento das diretivas rewrite e set do NGINX. Quando condições de configuração específicas são atendidas, um atacante pode acionar o estouro de heap ao construir uma solicitação maliciosa, causando negação de serviço (DoS) e até mesmo potencial execução remota de código (RCE).
Tipo de vulnerabilidade: Estouro de buffer no heap Nível de risco: Alto ID do CVE: CVE-2026-42945
Recomenda-se atualizar imediatamente para uma das seguintes versões:
A vulnerabilidade é acionada quando as seguintes duas condições são atendidas simultaneamente:
Condição de configuração: o NGINX usa simultaneamente na configuração:
rewrite (com o caractere ? na string de substituição)set (referenciando grupos de captura de regex do rewrite, como $1, $2)Condição de solicitação: o URI da solicitação contém caracteres escapáveis (como +, &, %, etc.)
Explicação do princípio:
rewrite define e->is_args = 1 (nunca é resetado)set usa um subengine zerado (le.is_args = 0)%25 como %, mas ngx_escape_uri reencoda como %25 (3 bytes)%25 se expande de 1 byte para 3 bytes, causando gravação além dos limites do buffer# 使用项目中的测试脚本
python3 CVE-2026-42945/CVE-2026-42945-test.py --host cve.test.com --port 80
%25 para um teste em pequena escala%25 (por exemplo, 2000) para acionar o estouro de bufferEm uma configuração NGINX de camada única, os resultados dos testes acionam a vulnerabilidade:
Análise do log de crash:
ngx_http_script_flush_no_cacheable_variablesngx_http_core_rewrite_phaseEm uma configuração NGINX de duas camadas (layer1 de encaminhamento + layer2 de negócios), os resultados dos testes são os seguintes:
| Cenário de configuração | Resultado layer1 | Resultado layer2 | Análise da causa |
|---|---|---|---|
rewrite sem break + proxy_pass | ❌ Aciona a vulnerabilidade (404) | ❌ Nenhuma solicitação chega | Após o rewrite, a execução de set continua e aciona o estouro de heap; o worker trava |
rewrite com break + proxy_pass | ✅ Normal (200) | ⚠️ Pode acionar a vulnerabilidade | O break encerra a execução de set; a solicitação é encaminhada normalmente ao backend |
| Arquivo | Descrição |
|---|---|
CVE-2026-42945/CVE-2026-42945-test.py | Script PoC de teste da vulnerabilidade, usado para verificar se o alvo está vulnerável |
single_layer_test/single_layer_nginx.conf | Exemplo de configuração NGINX vulnerável para arquitetura de camada única |
single_layer_test/image.png | Diagrama ilustrativo do princípio da vulnerabilidade |
single_layer_test/test.log | Arquivo de log de teste |
double_layer_test/layer1_nginx.conf | Configuração NGINX da primeira camada (camada de encaminhamento) da arquitetura de duas camadas |
double_layer_test/layer2_nginx.conf | Configuração NGINX da segunda camada (camada de negócios) da arquitetura de duas camadas |
Este projeto destina-se exclusivamente a fins de pesquisa em segurança e educação. Os usuários devem cumprir as leis e regulamentos de seus respectivos países e regiões. O autor não se responsabiliza por qualquer uso não autorizado ou indevido.
Proibido para ataques ilegais!
Última atualização: 2026-05-19