
Script en python scanner safe-check de la CVE-2025-23419
Dépôt avec script de validation sécurisée pour la CVE-2025-23419, vulnérabilité liée à NGINX, mTLS et reprise de session TLS.
Le script effectue une vérification heuristique pour identifier une éventuelle exposition à la faille, sans effectuer d'exploitation active et sans tenter de contourner l'authentification par certificat client.
Le but est de soutenir le tri technique, la validation défensive et l'analyse d'exposition dans des environnements autorisés.
| CVE | Technologie | Type | Composant affecté |
|---|
CVE-2025-23419 | NGINX | Contournement possible de l'authentification mTLS | Reprise de session TLS sur des hôtes virtuels |
La CVE-2025-23419 affecte les scénarios où plusieurs server blocks de NGINX partagent la même IP et le même port, et où l'environnement utilise l'authentification par certificat client, également connue sous le nom de mTLS.
Dans certaines configurations, un attaquant pourrait réutiliser une session TLS précédemment établie pour contourner les exigences d'authentification par certificat client dans un autre contexte d'hôte virtuel.
La vulnérabilité est liée à l'utilisation de la reprise de session TLS, surtout lorsque ssl_session_cache ou ssl_session_tickets sont activés.
En pratique, l'exposition dépend de la combinaison entre la version vulnérable, l'utilisation de TLS 1.3, la configuration de session TLS, plusieurs hôtes virtuels et l'application de mTLS sur des parties spécifiques de l'environnement.
Selon les avis publics, le problème affecte :
NGINX 1.11.4 e versões posteriores
Lorsque les conditions suivantes sont présentes :
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
La correction a été publiée dans les versions :
NGINX 1.26.3
NGINX 1.27.4
Par conséquent, une version telle que :
nginx/1.24.0
doit être traitée comme potentiellement vulnérable, à condition que le scénario de configuration soit également compatible avec la faille.
Important : la version vulnérable, à elle seule, ne confirme pas l'exploitation. Elle indique la nécessité de valider la configuration.
| Script | Objectif | Quand utiliser |
|---|---|---|
safe-check-CVE-2025-23419.py | Effectue une vérification sécurisée et heuristique pour une éventuelle exposition à la CVE-2025-23419. | À utiliser lorsque la cible expose un NGINX potentiellement vulnérable et qu'il y a suspicion d'utilisation de mTLS/reprise de session TLS. |
Le script effectue des validations sécurisées pour recueillir des indices de la vulnérabilité :
Server ;POSSIVEL ou NAO_INDICADO.Ce script n'exploite pas la vulnérabilité.
Il ne tente pas :
Le but est seulement de recueillir des indices techniques pour soutenir le tri et la validation défensive.
Utilisez ce script lorsqu'il y a un ou plusieurs des indices suivants :
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
Exemples de cibles appropriées :
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
Indique que le script a trouvé des indices compatibles avec une éventuelle exposition à la CVE-2025-23419.
Cela ne confirme pas d'exploitation. Cela signifie que l'environnement mérite une analyse manuelle de la configuration NGINX et une validation avec l'équipe responsable.
Exemple de sortie détaillée :
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
Ces données aident à comprendre pourquoi le endpoint a été classé comme exposition possible.
NAO_INDICADO
Indique que le script n'a pas trouvé suffisamment d'indices pour signaler une exposition possible sur ce endpoint.
Cela ne garantit pas l'absence absolue de la vulnérabilité, surtout si :
Server est masqué ;Les principaux points qui peuvent être ajustés sont :
CERT_ERROR_STATUS = {400, 401, 403, 495, 496}
Cette liste représente des codes HTTP pouvant indiquer un échec lié à un certificat client absent ou invalide.
Il est également possible d'ajuster le timeout via la ligne de commande :
--timeout 10
Le script utilise uniquement les bibliothèques standard de Python.
Dépendances principales :
python3
ssl
socket
argparse
urllib
Il n'est pas nécessaire d'installer des bibliothèques externes via pip.
Mettez à jour NGINX vers une version corrigée, de préférence 1.26.3, 1.27.4 ou supérieure, selon le canal utilisé.
Révisez la configuration des server blocks qui partagent la même IP et le même port, surtout lorsqu'il y a mTLS sur seulement une partie des hôtes virtuels.
Évaluez l'utilisation de :
ssl_session_cache
ssl_session_tickets
TLS 1.3
server blocks compartilhando IP e porta
mTLS aplicado em virtual hosts específicos
Il est également recommandé d'isoler les contextes qui exigent un certificat client et de valider si l'authentification mTLS est appliquée sur l'hôte virtuel correct.
De plus, vérifiez les configurations sur les proxies, passerelles, équilibreurs de charge, contrôleurs d'entrée et CDN, car le composant qui termine TLS peut ne pas être le même que celui qui répond pour l'application finale.
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
Ce script doit être utilisé uniquement dans des environnements autorisés.
Le but est de soutenir le tri, la validation sécurisée, le test d'intrusion autorisé, l'analyse défensive et la confirmation de l'exposition de configuration.
L'utilisation contre des systèmes sans autorisation est interdite.