
Exploit de prova de conceito para CVE-2026-42945, um estouro de buffer na heap no módulo de reescrita do NGINX que permite execução remota de código não autenticada via heap feng shui entre requisições.
Prova de conceito de RCE para CVE-2026-42945, um estouro crítico de buffer heap no módulo ngx_http_rewrite_module do NGINX introduzido em 2008. O bug permite execução remota de código não autenticada em servidores que usam as diretivas rewrite e set.
Esta vulnerabilidade — juntamente com três outros problemas de corrupção de memória (CVE-2026-42946, CVE-2026-40701, CVE-2026-42934) — foi descoberta autonomamente pelo sistema de análise de segurança da depthfirst após um único clique de integração do código-fonte do NGINX.
Quer encontrar problemas como este no seu próprio código? Experimente o mesmo sistema em https://depthfirst.com/open-defense.
O mecanismo de scripts do NGINX usa um processo de duas passadas: primeiro calcula o tamanho necessário do buffer, depois copia os dados. A flag is_args é definida no motor principal quando uma substituição de rewrite contém ?, mas a passada de cálculo de comprimento é executada em um submotor recém zerado. Então:
is_args = 0 → retorna o comprimento bruto da captura.is_args = 1 → chama ngx_escape_uri com NGX_ESCAPE_ARGS, expandindo cada byte escapável para 3 bytes.A cópia estoura o buffer heap subdimensionado com dados de URI controlados pelo atacante. A exploração usa heap feng shui entre requisições para corromper o ponteiro cleanup de um ngx_pool_t adjacente (pulverizado via corpos POST, já que bytes de URI não podem conter nulos), redirecionando-o para um ngx_pool_cleanup_s falso que invoca system() na destruição do pool.
Leia mais sobre este bug em nosso artigo técnico.
| Produto | Afetado | Corrigido em |
|---|---|---|
| NGINX Open Source | 0.6.27 – 1.30.0 | 1.31.0, 1.30.1 |
| NGINX Plus | R32 – R36 | R36 P4, R35 P2, R32 P6 |
Aviso completo do fornecedor: https://my.f5.com/manage/s/article/K000160932
Testado no Ubuntu 24.04.3 LTS.
./setup.sh — construir o container.docker compose -f env/docker-compose.yml up — iniciar o servidor NGINX vulnerável.python3 poc.py --shell — obter um shell.