
NGINX RCE exploits
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 não autenticada 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.
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 passagens: primeiro calcula o tamanho necessário do buffer e depois copia os dados. O sinalizador is_args é definido no mecanismo principal quando uma substituição de rewrite contém ?, mas a passagem de cálculo de comprimento é executada em um sub-mecanismo 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 de heap subdimensionado com dados de URI controlados pelo atacante. A exploração usa feng shui de heap 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 relatório técnico.
| Produto | Afetadas | 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
K000161616: Vulnerabilidade no ngx_http_v3_module do NGINX — O QPACK do HTTP/3 aloca o insert_buffer da sessão a partir do pool de um fluxo de codificador unidirecional. Fechar esse fluxo libera o pool enquanto a sessão mantém um ponteiro pendente, então um fluxo de codificador posterior aciona um use-after-free no heap no worker do NGINX.
K000162097: Vulnerabilidade na diretiva map e correspondência de regex do NGINX — A correspondência de regex da diretiva map com variáveis de captura pode causar um estouro de buffer no heap no processo worker do NGINX.
A falha está na avaliação de valor complexo em duas passagens do mecanismo de scripts de stream. Em uma configuração vulnerável de stream usando ssl_preread, o SNI de TLS controlado pelo atacante é alimentado em variáveis baseadas em regex. O NGINX primeiro calcula o comprimento do buffer de saída e depois copia a saída. Uma regex de map pode atualizar o estado global de captura entre essas passagens: a passagem de comprimento considera um valor pequeno, enquanto a passagem de cópia lê uma captura de regex maior, como $1, causando uma escrita fora dos limites no heap no worker.
O PoC complementar CVE-2026-42533/ é um exploit de cadeia completa. Ele usa a primitiva de vazamento de stream para recuperar as bases do heap e da libc para contornar o ASLR, pulveriza registros falsos de ngx_pool_cleanup_s através de corpos de requisições HTTP e então usa o estouro para corromper o ponteiro de cleanup de um pool adjacente do NGINX. Quando o pool corrompido é destruído, o despacho de cleanup é redirecionado para system() da libc, executando o comando fornecido.