
Script em python scanner safe-check da CVE-2025-23419
Repositório com script de validação segura para a CVE-2025-23419, vulnerabilidade relacionada ao NGINX, mTLS e TLS session resumption.
O script realiza uma checagem heurística para identificar possível exposição à falha, sem executar exploração ativa e sem tentar burlar autenticação por certificado cliente.
A proposta é apoiar triagem técnica, validação defensiva e análise de exposição em ambientes autorizados.
| CVE | Tecnologia | Tipo | Componente afetado |
|---|
CVE-2025-23419 | NGINX | Possível bypass de autenticação mTLS | TLS session resumption em virtual hosts |
A CVE-2025-23419 afeta cenários onde múltiplos server blocks do NGINX compartilham o mesmo IP e porta, e o ambiente utiliza autenticação por certificado cliente, também conhecida como mTLS.
Em determinadas configurações, um atacante poderia reutilizar uma sessão TLS previamente estabelecida para contornar exigências de autenticação por certificado cliente em outro contexto de virtual host.
A vulnerabilidade está relacionada ao uso de TLS session resumption, especialmente quando ssl_session_cache ou ssl_session_tickets estão habilitados.
Na prática, a exposição depende da combinação entre versão vulnerável, uso de TLS 1.3, configuração de sessão TLS, múltiplos virtual hosts e aplicação de mTLS em partes específicas do ambiente.
De acordo com advisories públicos, o problema afeta:
NGINX 1.11.4 e versões posteriores
Quando as seguintes condições estão presentes:
NGINX compilado com OpenSSL
TLS 1.3 habilitado
Session resumption habilitado
Uso de ssl_session_cache ou ssl_session_tickets
Múltiplos server blocks compartilhando o mesmo IP e porta
Autenticação mTLS/client certificate em algum virtual host
A correção foi publicada nas versões:
NGINX 1.26.3
NGINX 1.27.4
Portanto, uma versão como:
nginx/1.24.0
deve ser tratada como potencialmente vulnerável, desde que o cenário de configuração também seja compatível com a falha.
Importante: a versão vulnerável, sozinha, não confirma exploração. Ela indica necessidade de validação da configuração.
| Script | Objetivo | Quando usar |
|---|---|---|
safe-check-CVE-2025-23419.py | Realiza uma verificação segura e heurística para possível exposição à CVE-2025-23419. | Usar quando o alvo expõe NGINX potencialmente vulnerável e há suspeita de uso de mTLS/TLS session resumption. |
O script executa validações seguras para levantar indícios da vulnerabilidade:
Server;POSSIVEL ou NAO_INDICADO.Este script não explora a vulnerabilidade.
Ele não tenta:
A proposta é apenas levantar indícios técnicos para apoiar triagem e validação defensiva.
Use este script quando houver um ou mais dos seguintes indícios:
Servidor expõe nginx/1.24.0
Ambiente utiliza mTLS
Existem múltiplos virtual hosts no mesmo IP e porta
Há uso de TLS 1.3
Há suspeita de ssl_session_cache ou ssl_session_tickets habilitados
Ferramenta automatizada apontou CVE-2025-23419
Exemplos de alvos adequados:
https://api.exemplo.com.br/
https://admin.exemplo.com.br/
https://mtls.exemplo.com.br/
https://gateway.exemplo.com.br/
python3 safe-check-CVE-2025-23419.py https://exemplo.com.br/
python3 safe-check-CVE-2025-23419.py https://exemplo.com.br/ --verbose
python3 safe-check-CVE-2025-23419.py https://exemplo.com.br/ --json
python3 safe-check-CVE-2025-23419.py https://exemplo.com.br/ --timeout 10
POSSIVEL
Indica que o script encontrou indícios compatíveis com possível exposição à CVE-2025-23419.
Isso não confirma exploração. Significa que o ambiente merece análise manual da configuração NGINX e validação com o time responsável.
Exemplo de saída detalhada:
POSSIVEL
nginx_header: nginx/1.24.0
nginx_ver: (1, 24, 0) (vuln? True)
mtls_hint: True
tls: TLSv1.3
resumption_reused: True
other_vhost_no_mtls_hint: True
Esses dados ajudam a entender por que o endpoint foi classificado como possível exposição.
NAO_INDICADO
Indica que o script não encontrou indícios suficientes para apontar possível exposição naquele endpoint.
Isso não garante ausência absoluta da vulnerabilidade, principalmente se:
Server estiver oculto;Os principais pontos que podem ser ajustados são:
CERT_ERROR_STATUS = {400, 401, 403, 495, 496}
Essa lista representa códigos HTTP que podem indicar falha relacionada a certificado cliente ausente ou inválido.
Também é possível ajustar o timeout pela linha de comando:
--timeout 10
O script utiliza apenas bibliotecas padrão do Python.
Dependências principais:
python3
ssl
socket
argparse
urllib
Não é necessário instalar bibliotecas externas via pip.
Atualize o NGINX para uma versão corrigida, preferencialmente 1.26.3, 1.27.4 ou superior, conforme o canal utilizado.
Revise a configuração de server blocks que compartilham o mesmo IP e porta, especialmente quando houver mTLS em apenas parte dos virtual hosts.
Avalie o uso de:
ssl_session_cache
ssl_session_tickets
TLS 1.3
server blocks compartilhando IP e porta
mTLS aplicado em virtual hosts específicos
Também é recomendado isolar contextos que exigem certificado cliente e validar se a autenticação mTLS está sendo aplicada no virtual host correto.
Além disso, revise configurações em proxies, gateways, balanceadores, ingress controllers e CDNs, pois o componente que termina TLS pode não ser o mesmo que responde pela aplicação final.
https://mailman.nginx.org/pipermail/nginx-announce/2025/NYEUJX7NCBCGJGXDFVXNMAAMJDFSE45G.html
https://nvd.nist.gov/vuln/detail/CVE-2025-23419
https://ubuntu.com/security/CVE-2025-23419
https://github.com/advisories/GHSA-84xh-pwc6-7g4g
https://access.redhat.com/security/cve/cve-2025-23419
Este script deve ser utilizado apenas em ambientes autorizados.
A finalidade é apoiar triagem, validação segura, pentest autorizado, análise defensiva e confirmação de exposição de configuração.
O uso contra sistemas sem autorização é proibido.