
Este repositório contém um ambiente de prova de conceito (PoC) projetado para testar a CVE-2026-29145.
Este repositório contém um ambiente de prova de conceito (PoC) projetado para testar a CVE-2026-29145.
A vulnerabilidade é uma falha de autenticação na implementação de TLS Mútuo (CLIENT_CERT) do Apache Tomcat. Quando o OCSP (Online Certificate Status Protocol) é configurado com soft-fail desabilitado, o Tomcat pode falhar ao tratar uma falha de verificação OCSP como uma negação definitiva. Isso permite que um cliente com um certificado potencialmente revogado ou não verificado contorne a autenticação se o respondedor OCSP estiver inacessível ou retornar um erro.
| Propriedade | Valor |
|---|---|
| ID CVE | CVE-2026-29145 |
| Pontuação CVSS | 9.1 (Crítica) - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N |
| Vetor de Ataque | Rede |
| Privilégios Necessários | Nenhum |
| Impacto | Bypass de Autenticação |
.ps1O script run_test.sh automatiza todo o processo: limpeza, geração de certificados e execução de todos os cenários de teste (vulnerável, sucesso e corrigido).
# Navegue até o diretório do projeto
cd CVE-2026-29145-Tester
# Torne os scripts executáveis
chmod +x cleanup.sh setup_certs.sh run_test.sh
# Instale as dependências Python (se o poc_exploit.py exigir)
pip install -r requirements.txt
# Execute a suíte de testes completa
./run_test.sh
No Linux/macOS:
./setup_certs.sh
No Windows (PowerShell):
.\setup_certs.ps1
O que isso faz:
http://localhost:8888Saída esperada:
[INFO] Iniciando geração de certificados para o ambiente de teste CVE-2026-29145
[INFO] OpenSSL encontrado: OpenSSL 3.0.x (...)
[INFO] Diretório certs criado
[INFO] Gerando CA Raiz...
[INFO] Gerando Certificado do Servidor...
[INFO] Gerando Certificado do Cliente com Extensão OCSP...
[INFO] Configuração de certificados concluída com sucesso!
docker-compose up -d
O que isso faz:
Verifique se os contêineres estão em execução:
docker-compose ps
python poc_exploit.py
Saídas esperadas:
Sistema Vulnerável:
[INFO] Tentando conexão com https://localhost:8443/protected-resource...
[WARNING] VULNERÁVEL: Acesso concedido apesar da falha na verificação OCSP.
[WARNING] Prévia da resposta: <html>...
Sistema Corrigido:
[INFO] Tentando conexão com https://localhost:8443/protected-resource...
[INFO] NÃO VULNERÁVEL: Acesso negado (Autenticação funcionando).
| Cenário | Status OCSP | Esperado (Corrigido) | Resultado (Vulnerável) | Observações |
|---|---|---|---|---|
| Operação Normal | Online e Válido | 200 OK ✓ | 200 OK ✓ | Verificação OCSP bem-sucedida, acesso concedido |
| Falha Suave | Offline/Timeout | 403 Proibido ✓ | 200 OK ✗ | BYPASS - Respondedor OCSP inacessível |
| Revogação Definitiva | Online e Revogado | 403 Proibido ✓ | 403 Proibido ✓ | Certificado explicitamente revogado |
| Certificado Inválido | Cadeia Inválida | 403 Proibido ✓ | 403 Proibido ✓ | Validação da cadeia falha |
Teste 1: Padrão (Respondedor OCSP com Falha)
# Mantenha os contêineres em execução
python poc_exploit.py
Teste 2: Parar Respondedor OCSP (Simular Timeout)
docker-compose pause ocsp-responder
python poc_exploit.py
docker-compose unpause ocsp-responder
Teste 3: Teste Manual com 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 # Este arquivo
├── setup_certs.sh # Script de geração de certificados - Bash (Linux/macOS)
├── setup_certs.ps1 # Script de geração de certificados - PowerShell (Windows)
├── cleanup.sh # Script de limpeza e redefinição - Bash (Linux/macOS)
├── cleanup.ps1 # Script de limpeza e redefinição - PowerShell (Windows)
├── run_test.sh # Script de ciclo de teste automatizado completo
├── docker-compose.yml # Orquestração de serviços Docker
├── requirements.txt # Dependências Python
├── poc_exploit.py # Script de teste principal (com logging e tratamento de erros)
├── simple_proxy_fail.py # Respondedor OCSP simulado (com logging detalhado)
├── .gitignore # Regras de ignore do Git para certificados e logs
├── certs/ # Certificados gerados (criados pelos scripts setup_certs)
│ ├── ca-chain.pem # Certificado da CA Raiz
│ ├── ca-key.pem # Chave privada da CA Raiz
│ ├── server-cert.pem # Certificado do servidor Tomcat
│ ├── server-key.pem # Chave privada do servidor Tomcat
│ ├── client-cert.pem # Certificado do cliente de teste
│ └── client-key.pem # Chave privada do cliente de teste
├── tomcat/
│ └── server.xml # Configuração do Tomcat vulnerável
└── logs/ # Logs do Tomcat (criados em tempo de execução)
O arquivo tomcat/server.xml configura:
<SSLHostConfig
hostName="localhost"
certificateVerification="required"
caCertificateFile="conf/certs/ca-chain.pem">
<OpenSSLConf>
<ConfCommand name="OCSP" value="on"/>
</OpenSSLConf>
</SSLHostConfig>
Configurações Principais:
certificateVerification="required" - Impõe autenticação CLIENT_CERTOCSP on - Habilita verificação de revogação OCSPO respondedor OCSP simulado (simple_proxy_fail.py):
localhost:8888# macOS
brew install openssl
# Ubuntu/Debian
sudo apt-get install openssl
# CentOS/RHEL
sudo yum install openssl
Causa: A geração de certificados falhou ou não foi executada.
# Limpe e regenere
rm -rf certs
./setup_certs.sh
Causa: O contêiner Tomcat não está em execução ou não está pronto.
# Verifique o status do contêiner
docker-compose ps