
Prova de conceito de exploit para CVE-2026-42945, um estouro de buffer no heap crítico no módulo rewrite do NGINX que permite execução remota de código não autenticada. Inclui script de configuração e exploit em Python que abre shell.
Prova de conceito de RCE para CVE-2026-42945, um estouro de buffer no heap crítico no ngx_http_rewrite_module do NGINX introduzido em 2008. A falha permite execução remota de código sem autenticação contra servidores que utilizam as diretivas rewrite e set.
Esta vulnerabilidade — juntamente com outros três problemas de corrupção de memória (CVE-2026-42946, CVE-2026-40701, CVE-2026-42934) — foi descoberta de forma autônoma pelo sistema de análise de segurança da depthfirst após um único clique de integração do código-fonte do NGINX.
O mecanismo de script do NGINX usa um processo de duas passadas: primeiro calcula o tamanho necessário do buffer e depois copia os dados. A flag is_args é definida no mecanismo principal quando uma substituição de rewrite contém ?, mas a passada de cálculo de comprimento é executada em um sub-mecanismo recém-zerado. Portanto:
is_args = 0is_args = 1 → chama ngx_escape_uri com NGX_ESCAPE_ARGS, expandindo cada byte escapável para 3 bytes.A cópia causa estouro no buffer de 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 de POST, já que bytes de URI não podem conter bytes nulos), redirecionando-o para um ngx_pool_cleanup_s falso que invoca system() na destruição do pool.
Leia mais sobre esta falha em nosso https://t.me/p3Nt3st3rsTAr
| 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 |
Comunicado completo do fornecedor: https://my.f5.com/manage/s/article/K000160932
Testado no Ubuntu 24.04.3 LTS.
./setup.sh — construir o contêiner.docker compose -f env/docker-compose.yml up — iniciar o servidor NGINX vulnerável.python3 poc.py --shell — obter um shell.