
CVE-2026-42945 هي ثغرة خطيرة من نوع تجاوز سعة المخزن المؤقت في الكومة (Heap Buffer Overflow) في خادم NGINX، وتُعرف باسم "NGINX Rift". توجد هذه الثغرة في منطق معالجة توجيهي rewrite وset في NGINX. عند توفر شروط تكوين محددة، يمكن للمهاجم إطلاق تجاوز في الكومة عن طريق إنشاء طلب خبيث، مما يؤدي إلى رفض الخدمة (DoS) وربما تنفيذ تعليمات برمجية عن بُعد (RCE) بشكل محتمل.
نوع الثغرة: تجاوز سعة المخزن المؤقت في الكومة مستوى الخطورة: مرتفع معرّف CVE: CVE-2026-42945
يُنصح بالترقية فورًا إلى أحد الإصدارات التالية:
يتطلب تفعيل الثغرة استيفاء الشرطين التاليين معًا:
شرط التكوين: استخدام ما يلي معًا في تكوين NGINX:
rewrite (تحتوي سلسلة الاستبدال على الحرف ?)set (يشير إلى مجموعات الالتقاط في التعبير النمطي لتوجيه rewrite، مثل $1 و$2)شرط الطلب: يحتوي URI الخاص بالطلب على أحرف قابلة للتهريب (مثل + و& و% وغيرها)
شرح المبدأ:
rewrite يضبط e->is_args = 1 (لا تتم إعادة تعيينه أبدًا)set تستخدم محركًا فرعيًا صفريًا بالكامل (le.is_args = 0)%25 إلى %، لكن ngx_escape_uri يعيد ترميزها إلى %25 (3 بايتات)%25 يتم توسيعه من بايت واحد إلى 3 بايتات، مما يؤدي إلى الكتابة خارج حدود المخزن المؤقت# 使用项目中的测试脚本
python3 CVE-2026-42945/CVE-2026-42945-test.py --host cve.test.com --port 80
%25 لإجراء اختبار صغير النطاق%25 (مثل 2000 حرف) لتفعيل تجاوز سعة المخزن المؤقتفي تكوين NGINX أحادي الطبقة، تؤدي نتائج الاختبار إلى تفعيل الثغرة:
تحليل سجل التعطل:
ngx_http_script_flush_no_cacheable_variablesngx_http_core_rewrite_phaseفي تكوين NGINX ثنائي الطبقات (طبقة layer1 للإرسال + طبقة layer2 للأعمال)، تكون نتائج الاختبار كما يلي:
هذا المشروع مخصص لأغراض البحث الأمني والتعليم فقط. يجب على المستخدمين الالتزام بالقوانين واللوائح في بلدانهم ومناطقهم. لا يتحمل المؤلف أي مسؤولية عن أي إساءة استخدام غير مصرح بها.
يُمنع استخدامه في الهجمات غير القانونية!
آخر تحديث: 2026-05-19
| سيناريو التكوين | نتيجة layer1 | نتيجة layer2 | تحليل السبب |
|---|
rewrite بدون break + proxy_pass | ❌ تفعيل الثغرة (404) | ❌ لا يصل أي طلب | يستمر تنفيذ set بعد rewrite مما يفعّل تجاوز الكومة، وتتعطل عملية worker |
rewrite مع break + proxy_pass | ✅ طبيعي (200) | ⚠️ قد تفعّل الثغرة | break يوقف تنفيذ set، ويُعاد توجيه الطلب بشكل طبيعي إلى الواجهة الخلفية |
| الملف | الوصف |
|---|
CVE-2026-42945/CVE-2026-42945-test.py | نص PoC لاختبار الثغرة، يُستخدم للتحقق مما إذا كان الهدف عرضة للثغرة |
single_layer_test/single_layer_nginx.conf | مثال لتكوين NGINX أحادي الطبقة عرضة للثغرة |
single_layer_test/image.png | مخطط يوضح مبدأ الثغرة |
single_layer_test/test.log | ملف سجل الاختبار |
double_layer_test/layer1_nginx.conf | تكوين NGINX للطبقة الأولى (طبقة الإرسال) في البنية ثنائية الطبقات |
double_layer_test/layer2_nginx.conf | تكوين NGINX للطبقة الثانية (طبقة الأعمال) في البنية ثنائية الطبقات |