O Diário do Analista
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  rewriteset 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:
    • rewrite com captura não nomeada.
    • string de substituição contendo ? seguido por rewriteif ou set no 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

Tags: , , , , .

Categorias: Alerta, CVE, Nginx, PoC.