
يحتوي هذا المستودع على بيئة إثبات مفهوم (PoC) مصممة لاختبار CVE-2026-29145.
يحتوي هذا المستودع على بيئة إثبات المفهوم (PoC) مصممة لاختبار CVE-2026-29145.
الثغرة هي تجاوز للمصادقة في تنفيذ Tomcat من Apache لـ Mutual TLS (CLIENT_CERT). عندما يتم تكوين OCSP (بروتوكول حالة الشهادة عبر الإنترنت) مع تعطيل الفشل الناعم، قد يفشل Tomcat في التعامل مع فشل فحص OCSP كرفض صارم. وهذا يسمح للعميل الذي يحمل شهادة ربما تم إبطالها أو غير موثقة بتجاوز المصادقة إذا كان مستجيب OCSP غير قابل للوصول أو يعيد خطأ.
| الخاصية | القيمة |
|---|---|
| معرف CVE | CVE-2026-29145 |
| درجة CVSS | 9.1 (حرجة) - 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] بدء توليد الشهادات لبيئة اختبار CVE-2026-29145
[INFO] تم العثور على OpenSSL: OpenSSL 3.0.x (...)
[INFO] تم إنشاء دليل الشهادات
[INFO] جارٍ توليد مرجع المصادقة الجذر...
[INFO] جارٍ توليد شهادة الخادم...
[INFO] جارٍ توليد شهادة العميل مع امتداد OCSP...
[INFO] اكتمل إعداد الشهادات بنجاح!
docker-compose up -d
ما الذي يفعله هذا:
تحقق من تشغيل الحاويات:
docker-compose ps
python poc_exploit.py
المخرجات المتوقعة:
النظام الضعيف:
[INFO] محاولة الاتصال بـ https://localhost:8443/protected-resource...
[WARNING] ضعيف: تم منح الوصول على الرغم من فشل فحص OCSP.
[WARNING] معاينة الاستجابة: <html>...
النظام المصحح:
[INFO] محاولة الاتصال بـ https://localhost:8443/protected-resource...
[INFO] غير ضعيف: تم رفض الوصول (المصادقة تعمل).
| السيناريو | حالة OCSP | المتوقع (مصحح) | النتيجة (ضعيف) | ملاحظات |
|---|---|---|---|---|
| التشغيل العادي | متصل وصالح | 200 OK ✓ | 200 OK ✓ | نجاح فحص OCSP، يتم منح الوصول |
| الفشل الناعم | غير متصل/مهلة | 403 ممنوع ✓ | 200 OK ✗ | تجاوز - مستجيب OCSP غير قابل للوصول |
| الإبطال الصارم | متصل ومُبطَل | 403 ممنوع ✓ | 403 ممنوع ✓ | الشهادة مُبطَلة صراحةً |
| شهادة غير صالحة | سلسلة غير صالحة | 403 ممنوع ✓ | 403 ممنوع ✓ | فشل التحقق من السلسلة |
الاختبار 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 للشهادات والسجلات
├── 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 # انتظار بدء الخدمات
السبب: يستغرق Tomcat وقتًا طويلاً للبدء أو وجود مشكلات في الشبكة.
# التحقق من سجلات بدء تشغيل Tomcat
docker-compose logs vulnerable-tomcat
# زيادة المهلة وإعادة المحاولة
timeout 30 docker-compose logs -f vulnerable-tomcat # مراقبة بدء التشغيل
السبب: Docker Compose غير مثبت أو غير موجود في PATH.
# تثبيت Docker Compose (إذا كان مستقلًا)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.x.x/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# أو استخدام docker compose (V2 المدمج مع Docker Desktop)
docker compose up -d
السبب: فشل التحقق من الشهادة.