
Prova de conceito de exploit, análise de causa raiz e patch de uma linha para CVE-2026-97629, uma falsificação de ticket de sessão TLS do nginx que contorna a autenticação por certificado de cliente (mTLS).
Uma linha de C. Uma sessão TLS forjada. Encontrada, provada de ponta a ponta e coordenada até a correção pela PhiNode Labs.
Um exploit proof-of-concept, a análise de causa raiz, o patch de uma linha e as evidências de reprodução para a CVE-2026-97629, uma falsificação de session-ticket TLS no nginx que pode contornar a autenticação por certificado de cliente (mutual-TLS). Divulgada à F5 sob divulgação coordenada e creditada à PhiNode Labs.
Leia o write-up completo: https://phinode.io/nginx-cve-2026-97629.html
"A F5 reconhece a PhiNode Labs por trazer este problema à nossa atenção e por seguir os mais altos padrões de divulgação coordenada." — F5 Security Advisory K000162606
| CVE | CVE-2026-97629 |
| Advisory | F5 K000162606 · GHSA-862p-pr69-37gq |
| Severidade | CVSS 3.1 6.5 / CVSS 4.0 8.3 (F5). Até 10.0 em implantações mutual-TLS |
| Fraqueza | CWE-908 — uso de recurso não inicializado |
| Componente | ngx_http_ssl_module — ngx_ssl_rotate_ticket_keys() |
| Afetados | nginx 1.23.2 – 1.31.6, NGINX Plus até R37 (37.0.5) e produtos F5 construídos sobre o nginx |
| Corrigido | nginx 1.31.7 e 1.30.6, NGINX Plus 37.0.5.1 / 37.1.0.1 |
| Crédito | PhiNode Labs — [email protected] |
Para retomar conexões TLS rapidamente, o nginx sela um session ticket com
uma chave rotativa e mantém três dessas chaves por worker: atual, anterior e
próxima. Durante a rotação, ngx_ssl_rotate_ticket_keys() copiava apenas dois
dos três slots para cada worker; o terceiro nunca era escrito após a
inicialização. Em uma build Linux padrão, essa memória é toda zeros — o
mesmo valor previsível em cada worker de cada implantação padrão.
O callback de descriptografia varre os três slots. Um cliente pode enviar um ticket forjado cujo nome de chave de 16 bytes é todo zeros, corresponder ao terceiro slot intocado e fazer o nginx abri-lo com chaves AES e HMAC de zeros que qualquer um pode adivinhar. A partir daí, um atacante forja uma sessão válida com chaves de sua escolha e retoma uma conexão criptografada sem completar um handshake real. Onde um servidor confia em um certificado de cliente para decidir quem entra, essa verificação é contornada.
A correção é um único caractere:
ngx_memcpy(keys->elts, cache->ticket_keys,
- 2 * sizeof(ngx_ssl_ticket_key_t));
+ 3 * sizeof(ngx_ssl_ticket_key_t));
Consulte patch/ para o diff pronto para aplicação.
O nginx atende aproximadamente um terço de todos os sites. O impacto que a F5 credita — contornar a verificação de certificado de cliente — recai com mais força sobre mTLS: open banking (PSD2 / FAPI), troca de dados de saúde, funções de núcleo de rede 5G, ingress do Kubernetes, zero-trust e frotas de dispositivos, onde um certificado é toda a decisão de acesso. Nessas implantações, a falsificação é um bypass completo de autenticação de cliente, a leitura de severidade máxima.
Tudo é local, em um listener de loopback com um certificado autoassinado
descartável. Consulte poc/ para o exploit e evidence/
para a saída capturada: o nginx aceitando a chave totalmente zerada, o handshake
abreviado, e uma leitura/escrita completa sobre a sessão forjada (HTTP 404 descriptografado).
cd poc
python3 make_forged_session.py # patch the session_id_context
python3 forge_ticket.py # -> VERDICT: TICKET ACCEPTED
python3 forge_ticket_full.py # -> full read/write over the forged session
ssl_session_tickets off;ssl_session_ticket_key explícitos que você mesmo rotaciona.Um servidor só está exposto se todas as condições forem verdadeiras: uma versão vulnerável, um
ssl_session_cache shared:…, tickets ativados sem arquivo de chave, e certificados
que decidem o acesso.
| Data | Evento |
|---|---|
| Jun 2026 | PhiNode Labs identifica a incompatibilidade de slot e a comprova de ponta a ponta |
| Ago 2026 | Reportado ao F5 SIRT; encaminhado à NGINX Product Engineering |
| Set 2026 | NGINX PE classifica como vulnerabilidade |
| 12 de out. de 2026 | CVE-2026-97629 atribuído (F5 NPS-179) |
| 14 de out. de 2026 | F5 publica K000162606; correções chegam no nginx 1.31.7 / 1.30.6 |
Esta prova de conceito é publicada após a correção ter sido lançada e com a liberação coordenada da F5, para que defensores possam verificar seus próprios servidores. Não a use contra sistemas que você não possui ou opera.
A PhiNode Labs é um laboratório de pesquisa aplicada em análise de programas. Encontramos os defeitos que scanners e modelos de linguagem deixam passar — nenhuma string injetada, nenhuma função obviamente ruim, apenas um tamanho que deveria ser três e era dois — raciocinando sobre o que a memória de um programa realmente contém em tempo de execução. Nenhuma afirmação sem uma testemunha.
Palavras-chave: CVE-2026-97629, nginx, TLS session ticket, falsificação de session ticket, retomada de sessão, mutual TLS, mTLS, bypass de certificado de cliente, ngx_http_ssl_module, ngx_ssl_rotate_ticket_keys, F5, NGINX Plus, prova de conceito, PoC, exploit, CWE-908, PhiNode Labs, análise de programas.