
Script Python scanner safe-check per CVE-2025-23419
Repository con script di validazione sicura per la CVE-2025-23419, vulnerabilità relativa a NGINX, mTLS e TLS session resumption.
Lo script esegue un controllo euristico per identificare una possibile esposizione alla falla, senza eseguire exploit attivi e senza tentare di aggirare l'autenticazione tramite certificato client.
Lo scopo è supportare lo screening tecnico, la validazione difensiva e l'analisi dell'esposizione in ambienti autorizzati.
| CVE | Tecnologia | Tipo | Componente interessato |
|---|
CVE-2025-23419 | NGINX | Possibile bypass dell'autenticazione mTLS | TLS session resumption in virtual host |
La CVE-2025-23419 interessa scenari in cui più server blocks di NGINX condividono lo stesso IP e porta, e l'ambiente utilizza l'autenticazione tramite certificato client, nota anche come mTLS.
In determinate configurazioni, un attaccante potrebbe riutilizzare una sessione TLS precedentemente stabilita per aggirare i requisiti di autenticazione tramite certificato client in un altro contesto di virtual host.
La vulnerabilità è correlata all'uso di TLS session resumption, specialmente quando ssl_session_cache o ssl_session_tickets sono abilitati.
In pratica, l'esposizione dipende dalla combinazione tra versione vulnerabile, uso di TLS 1.3, configurazione della sessione TLS, molteplici virtual host e applicazione di mTLS in parti specifiche dell'ambiente.
Secondo advisory pubblici, il problema interessa:
NGINX 1.11.4 e versões posteriores
Quando sono presenti le seguenti condizioni:
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 correzione è stata pubblicata nelle versioni:
NGINX 1.26.3
NGINX 1.27.4
Pertanto, una versione come:
nginx/1.24.0
deve essere considerata potenzialmente vulnerabile, purché lo scenario di configurazione sia altresì compatibile con la falla.
Importante: la versione vulnerabile, da sola, non conferma l'exploit. Indica la necessità di validare la configurazione.
| Script | Obiettivo | Quando usare |
|---|---|---|
safe-check-CVE-2025-23419.py | Realizza una verifica sicura ed euristica per una possibile esposizione alla CVE-2025-23419. | Usare quando il target espone NGINX potenzialmente vulnerabile e c'è sospetto di uso di mTLS/TLS session resumption. |
Lo script esegue validazioni sicure per rilevare indizi della vulnerabilità:
Server;POSSIVEL o NAO_INDICADO.Questo script non sfrutta la vulnerabilità.
Non tenta:
Lo scopo è solo rilevare indizi tecnici per supportare screening e validazione difensiva.
Usa questo script quando sono presenti uno o più dei seguenti indizi:
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
Esempi di target adatti:
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 che lo script ha trovato indizi compatibili con una possibile esposizione alla CVE-2025-23419.
Ciò non conferma l'exploit. Significa che l'ambiente merita un'analisi manuale della configurazione NGINX e una validazione con il team responsabile.
Esempio di output dettagliato:
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
Questi dati aiutano a capire perché l'endpoint è stato classificato come possibile esposizione.
NAO_INDICADO
Indica che lo script non ha trovato indizi sufficienti per segnalare una possibile esposizione su quell'endpoint.
Ciò non garantisce l'assoluta assenza della vulnerabilità, soprattutto se:
Server è nascosto;I principali punti che possono essere regolati sono:
CERT_ERROR_STATUS = {400, 401, 403, 495, 496}
Questa lista rappresenta codici HTTP che possono indicare un fallimento relativo a certificato client mancante o non valido.
È anche possibile regolare il timeout tramite riga di comando:
--timeout 10
Lo script utilizza solo librerie standard di Python.
Dipendenze principali:
python3
ssl
socket
argparse
urllib
Non è necessario installare librerie esterne tramite pip.
Aggiorna NGINX a una versione corretta, preferibilmente 1.26.3, 1.27.4 o superiore, a seconda del canale utilizzato.
Rivedi la configurazione dei server block che condividono lo stesso IP e porta, specialmente quando c'è mTLS solo in una parte dei virtual host.
Valuta l'uso di:
ssl_session_cache
ssl_session_tickets
TLS 1.3
server blocks compartilhando IP e porta
mTLS aplicado em virtual hosts específicos
Inoltre, rivedi le configurazioni in proxy, gateway, bilanciatori, ingress controller e CDN, poiché il componente che termina TLS potrebbe non essere lo stesso che risponde per l'applicazione 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
Questo script deve essere utilizzato solo in ambienti autorizzati.
La finalità è supportare screening, validazione sicura, pentest autorizzato, analisi difensiva e conferma di esposizione di configurazione.
L'uso contro sistemi senza autorizzazione è proibito.