
Python-Skript-Scanner Safe-Check der CVE-2025-23419
Repository mit sicherem Validierungsskript für die CVE-2025-23419, eine Schwachstelle in Bezug auf NGINX, mTLS und TLS session resumption.
Das Skript führt eine heuristische Prüfung durch, um eine mögliche Gefährdung durch den Fehler zu identifizieren, ohne aktive Ausnutzung und ohne zu versuchen, die Client-Zertifikatsauthentifizierung zu umgehen.
Der Zweck ist die Unterstützung technischer Triage, defensiver Validierung und Expositionsanalyse in autorisierten Umgebungen.
| CVE | Technologie | Typ | Betroffene Komponente |
|---|
CVE-2025-23419 | NGINX | Möglicher mTLS-Authentifizierungs-Bypass | TLS session resumption in virtuellen Hosts |
Die CVE-2025-23419 betrifft Szenarien, in denen mehrere server blocks von NGINX dieselbe IP und denselben Port teilen und die Umgebung eine Client-Zertifikatsauthentifizierung, auch bekannt als mTLS, verwendet.
In bestimmten Konfigurationen könnte ein Angreifer eine zuvor etablierte TLS-Sitzung wiederverwenden, um Anforderungen an die Client-Zertifikatsauthentifizierung in einem anderen Virtual-Host-Kontext zu umgehen.
Die Schwachstelle steht im Zusammenhang mit der Verwendung von TLS session resumption, insbesondere wenn ssl_session_cache oder ssl_session_tickets aktiviert sind.
In der Praxis hängt die Exposition von der Kombination aus anfälliger Version, Verwendung von TLS 1.3, TLS-Sitzungskonfiguration, mehreren virtuellen Hosts und der Anwendung von mTLS in bestimmten Teilen der Umgebung ab.
Laut öffentlichen Advisories betrifft das Problem:
NGINX 1.11.4 e versões posteriores
Wenn die folgenden Bedingungen vorliegen:
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
Die Korrektur wurde in den Versionen veröffentlicht:
NGINX 1.26.3
NGINX 1.27.4
Daher sollte eine Version wie:
nginx/1.24.0
sollte als potenziell anfällig behandelt werden, sofern das Konfigurationsszenario ebenfalls mit dem Fehler kompatibel ist.
Wichtig: Die anfällige Version allein bestätigt keine Ausnutzung. Sie weist auf die Notwendigkeit einer Validierung der Konfiguration hin.
| Skript | Ziel | Wann verwenden |
|---|---|---|
safe-check-CVE-2025-23419.py | Führt eine sichere und heuristische Prüfung auf mögliche Exposition gegenüber CVE-2025-23419 durch. | Verwenden, wenn das Ziel potenziell anfälliges NGINX exponiert und der Verdacht auf mTLS/TLS session resumption besteht. |
Das Skript führt sichere Validierungen durch, um Anzeichen der Schwachstelle zu ermitteln:
Server-Header zu identifizieren;POSSIVEL oder NAO_INDICADO anzeigt.Dieses Skript nutzt die Schwachstelle nicht aus.
Es versucht nicht:
Der Zweck ist lediglich, technische Anzeichen zu sammeln, um Triage und defensive Validierung zu unterstützen.
Verwenden Sie dieses Skript, wenn eines oder mehrere der folgenden Anzeichen vorliegen:
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
Beispiele geeigneter Ziele:
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
Zeigt an, dass das Skript Anzeichen gefunden hat, die mit einer möglichen Exposition gegenüber CVE-2025-23419 vereinbar sind.
Dies bestätigt keine Ausnutzung. Es bedeutet, dass die Umgebung eine manuelle Analyse der NGINX-Konfiguration und Validierung mit dem verantwortlichen Team verdient.
Beispiel einer detaillierten Ausgabe:
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
Diese Daten helfen zu verstehen, warum der Endpunkt als mögliche Exposition eingestuft wurde.
NAO_INDICADO
Zeigt an, dass das Skript nicht genügend Anzeichen gefunden hat, um auf eine mögliche Exposition an diesem Endpunkt hinzuweisen.
Dies garantiert nicht das vollständige Fehlen der Schwachstelle, insbesondere wenn:
Server-Header ausgeblendet ist;Die wichtigsten anpassbaren Punkte sind:
CERT_ERROR_STATUS = {400, 401, 403, 495, 496}
Diese Liste repräsentiert HTTP-Statuscodes, die auf einen Fehler aufgrund eines fehlenden oder ungültigen Client-Zertifikats hinweisen können.
Es ist auch möglich, das timeout über die Befehlszeile anzupassen:
--timeout 10
Das Skript verwendet nur Standard-Python-Bibliotheken.
Hauptabhängigkeiten:
python3
ssl
socket
argparse
urllib
Es ist nicht erforderlich, externe Bibliotheken über pip zu installieren.
Aktualisieren Sie NGINX auf eine behobene Version, vorzugsweise 1.26.3, 1.27.4 oder höher, je nach verwendetem Kanal.
Überprüfen Sie die Konfiguration von server blocks, die dieselbe IP und denselben Port teilen, insbesondere wenn mTLS nur bei einem Teil der virtuellen Hosts vorhanden ist.
Bewerten Sie die Verwendung von:
ssl_session_cache
ssl_session_tickets
TLS 1.3
server blocks compartilhando IP e porta
mTLS aplicado em virtual hosts específicos
Es wird auch empfohlen, Kontexte zu isolieren, die ein Client-Zertifikat erfordern, und zu validieren, ob die mTLS-Authentifizierung auf dem richtigen virtuellen Host angewendet wird.
Überprüfen Sie außerdem Konfigurationen in Proxys, Gateways, Load Balancern, Ingress-Controllern und CDNs, da die TLS-beendende Komponente möglicherweise nicht dieselbe ist, die für die endgültige Anwendung antwortet.
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
Dieses Skript sollte nur in autorisierten Umgebungen verwendet werden.
Der Zweck ist die Unterstützung von Triage, sicherer Validierung, autorisiertem Pentest, defensiver Analyse und Bestätigung von Konfigurationsexposition.
Die Verwendung gegen Systeme ohne Autorisierung ist untersagt.