Vol. 2 | N. 5 | Pp. 141–142 | 2026 | ISSN xxxx-xxxx
Alerta: Nova Vulnerabilidade com PoC Afeta NGINX (CVE-2026-42945)
A CVE-2026-42945 [1] descreve um heap buffer overflow crítico que afeta o módulor do NGINX ngx_http_rewrite_module, uma funcionalidade introduzida em 2008. O bug permite execução de código remoto não autenticado contra serviços com as diretivas rewrite e set ativas.
Essa vulnerabilidade, em conjunto com outras três de memory corruption, foi descoberta pelo sistema autônomo de análise de segurança Depthfirst.
Impacto Prático
Na prática, essa vulnerabilidade permite que um atacante remoto, sem autenticação, comprometa completamente servidores NGINX expostos, explorando apenas requisições HTTP maliciosas. Isso pode resultar em execução de comandos no sistema operacional, acesso a dados sensíveis, alteração de respostas do servidor (como injeção de conteúdo ou redirecionamentos maliciosos) e até movimentação lateral dentro da infraestrutura. Em ambientes de produção, especialmente aqueles que utilizam NGINX como proxy reverso ou gateway de APIs, o impacto é crítico, pois um único ponto vulnerável pode servir como porta de entrada para comprometer múltiplos serviços internos.
Versões Afetadas
| Produto | Afetado | Patch 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 |
Verificação Imediata
- Verifique a versão instalada
$ nginx -v
- Procure por padrões vulneráveris
grep -RInE 'rewrite.*\?|rewrite.*\$\d+' /etc/nginx/
Mitigação
- Atualize para a versão do sistema mais recente.
- Remova ou substitua blocos que combinam:
rewritecom captura não nomeada.- string de substituição contendo
?seguido porrewrite,ifousetno mesmo escopo.
Como o Bug Funciona
O sistema de script do NGINX processa URLs em dois passos: primeiro calcula o tamanho do buffer necessário para armazenar os dados, e então copia os dados para ele. A flag is_args indica se a URL da requisição contém parâmetros (por exemplo, o ? em exemplo.com/page?id=1). O problema surge quando uma diretiva rewrite no servidor insere esse ? na URL, ativando is_args entre os dois passos, em subsistemas diferentes.
Passo 1 — Cálculo do tamanho: O subsistema recém-iniciado (zeroized) ainda não enxerga os parâmetros da URL (is_args = 0) e calcula um buffer pequeno, suficiente apenas para os dados brutos de captura (raw capture data).
Passo 2 — Cópia dos dados: Agora o subsistema já enxerga os parâmetros (is_args = 1) e chama ngx_escape_uri com a flag NGX_ESCAPE_ARGS. Essa função expande cada byte que precisa ser escapado em 3 bytes (por exemplo, um espaço vira %20), fazendo os dados ocuparem até 3 bytes a mais de espaço do que o buffer reservado no passo anterior.
Como o buffer foi dimensionado sem considerar essa expansão, os dados extras sobrescrevem memória adjacente no heap, caracterizando um buffer overflow controlado pelo atacante via URI.
A exploração utiliza heap feng shui¹. Com isso, o atacante posiciona uma estrutura falsa ngx_pool_cleanup_s na região que será sobrescrita. Essa estrutura é chamada pelo NGINX no momento em que a pool de memória é destruída ao fim de uma requisição e, com os ponteiros corrompidos, a execução é redirecionada para system() com um argumento controlado pelo atacante, resultando em execução remota de código (RCE, Remote Code Execution).
O código completo da prova de conceito está disponível no repositório NGINX-Rift. [2]
¹Uma técnica que envia requisições preparatórias entre diferentes requisições para manipular o layout da memória do processo.
Referências
[1] CVE-2026-42945 NVD
[2] NGINX-RIFT DepthFirstDisclosures POC