Um bug crítico presente no NGINX desde 2008. CVSS 9.2. Heap buffer overflow com caminho para RCE. Nenhum scanner detectou em 18 anos. Uma plataforma de IA encontrou em 6 horas. Na Tech86, acompanhamos essa descoberta de perto — e o que ela representa para a segurança de infraestrutura é mais importante que o bug em si.
O bug: heap overflow determinístico no rewrite engine
O motor de rewrite do NGINX opera em dois passes. O primeiro calcula o tamanho do buffer necessário. O segundo copia os dados para esse buffer. O problema está na desconexão entre esses dois passes.
Quando uma diretiva rewrite contém ? na replacement string, a flag is_args é setada no engine principal e nunca é limpa. No momento de calcular o tamanho, o sub-engine — zerado — ignora o escaping. No momento de copiar, o engine principal com is_args=1 chama ngx_escape_uri. Cada byte escapável (+, %, &) expande de 1 para 3 bytes. O buffer é alocado para raw_size. A cópia escreve raw_size + 2*N bytes. Overflow determinístico, controlado pelo atacante via URI.
O gatilho é um padrão de configuração documentado e recomendado: capturas PCRE não-nomeadas ($1, $2) combinadas com ? na replacement e uma diretiva set, rewrite ou if subsequente. Algo como rewrite ^/users/([0-9]+)$ /profile.php?id=$1?last; — exatamente o tipo de regra que API gateways usam diariamente.
A exploração: RCE sem autenticação em um único request
Um único HTTP request. Sem autenticação. Sem sessão prévia. É tudo o que um atacante precisa.
O overflow corrompe a estrutura ngx_pool_t adjacente na heap. O ponteiro cleanup no offset 64 é sobrescrito. Na destruição do pool, o NGINX executa o que estiver nesse ponteiro — um caminho direto para execução de código arbitrário.
O PoC demonstrado usa cross-request heap feng shui: duas conexões simultâneas para posicionar pools adjacentes, POST bodies para spray de fake cleanup objects chamando system(), e URI-safe payload para sobrescrever bytes baixos do ponteiro. Com ASLR desabilitado, RCE é confirmado. Com ASLR habilitado, DoS é garantido — e o pesquisador observa: o master faz fork de workers com layout idêntico. Se o exploit crasha um worker, spawna outro com o mesmo layout. Pode-se tentar até conseguir.
Isso não é teórico. É reproduzível. E afeta praticamente todo NGINX do planeta — 33% dos websites globais.
Quem encontrou: IA em 6 horas, humanos em 18 anos
DepthFirst AI. Plataforma LLM-powered. Um clique de onboarding. Seis horas de análise. Quatro memory corruption bugs na mesma sessão:
- CVE-2026-42945 (CVSS 9.2) — heap overflow no rewrite
- CVE-2026-42946 (CVSS 8.3) — alocação de ~1 TB em SCGI/UWSGI
- CVE-2026-40701 (CVSS 6.3) — use-after-free no SSL/OCSP
- CVE-2026-42934 (CVSS 6.3) — out-of-bounds read no charset
Dezoito anos. Um terço da web. Zero detecção humana. A IA não encontrou por acaso — ela sistemáticamente explorou code paths internos que fuzzers tradicionais não alcançam. O rewrite engine do NGINX é um subsistema complexo com estado compartilhado entre passes, e a combinação de is_args persistente com escaping condicional é exatamente o tipo de bug lógico que testes de superfície nunca vão encontrar.
A assimetria que muda o jogo
O custo ofensivo para encontrar bugs como o NGINX Rift caiu de anos para horas. O custo defensivo para aplicar o patch em milhares de instâncias continua ordens de magnitude maior. Essa é a assimetria que define o novo cenário de segurança.
Pense na matemática: um atacante com acesso a uma ferramenta de IA pode escanear dezenas de projetos open source por dia. Cada scan tem o potencial de encontrar bugs críticos que existem há anos. Do lado defensivo, cada vulnerabilidade descoberta exige inventário de ativos, priorização, janela de manutenção, teste de regressão, deploy coordenado — e isso para cada instância, em cada ambiente, em cada cliente.
Na Tech86, vimos essa dinâmica se repetir em cada vulnerabilidade crítica dos últimos anos. O tempo entre disclosure e exploração em massa encolheu de meses para dias. O tempo entre disclosure e patch completo na infraestrutura real dos clientes não acompanhou. E o NGINX Rift é o exemplo mais dramático até agora: 18 anos de vulnerabilidade, descoberta em horas, e semanas até que cada instância esteja corrigida.
O que isso significa na prática
Essa assimetria favorece quem rodar o próximo scan autônomo primeiro. E o próximo alvo não precisa ser o NGINX. Pode ser qualquer software que rode em escala global — e quase todos têm subsistemas com lógica interna complexa que nunca foi auditada com essa profundidade.
A defesa perimetral deixa de ser opcional. Quando o tempo entre descoberta e exploração colapsa, você não pode depender de "vamos patchar na próxima janela". Precisa de camadas que filtrem o tráfego malicioso antes que ele alcance o software vulnerável. Precisa de visibilidade sobre o que está rodando e onde. Precisa de processos de patching que funcionem em horas, não em semanas.
O workaround imediato para o NGINX Rift — capturas nomeadas — é simples e eficaz. Mas é um band-aid. O problema estrutural é que a velocidade da descoberta de vulnerabilidades agora é governada por IA, e a velocidade da resposta ainda é governada por processos humanos. Até essa lacuna fechar, WAF e defesa em profundidade não são luxo — são a única coisa entre sua infraestrutura e o próximo CVE de 9.2.
Conclusão
O NGINX Rift não é só mais uma vulnerabilidade. É um marco: o momento em que a IA provou que pode encontrar bugs críticos que 18 anos de auditoria humana não encontraram — e fez isso em uma tarde. A pergunta não é se a próxima vulnerabilidade assim será descoberta. É quando. E se sua infraestrutura estará protegida quando isso acontecer.
Na Tech86, construímos nossa Blindagem Perímetro WAF para ser exatamente essa camada: proteção que funciona enquanto o patch não chega, regras que bloqueiam padrões de exploração antes que eles atinjam o software vulnerável, e visibilidade sobre o tráfego que chega nos seus servidores. Porque em um mundo onde bugs de 18 anos são encontrados em 6 horas, você não pode esperar até a próxima janela de manutenção.
