
إثبات مفهوم لاستغلال CVE-2026-42945، وهو تجاوز سعة مخزن مؤقت في الكومة (heap buffer overflow) حرج في وحدة إعادة الكتابة (rewrite module) في NGINX، مما يتيح تنفيذ تعليمات برمجية عن بُعد دون مصادقة. يتضمن سكربت إعداد واستغلال بلغة Python لفتح قشرة (shell).
إثبات مفهوم لـ RCE لثغرة CVE-2026-42945، وهي ثغرة حرجة من نوع تجاوز سعة المخزن المؤقت في الكومة (heap buffer overflow) في وحدة ngx_http_rewrite_module في NGINX، أُدخل هذا الخطأ إلى الكود عام 2008. تتيح الثغرة تنفيذ كود عن بُعد دون مصادقة ضد الخوادم التي تستخدم توجيهات rewrite وset.
اكتُشفت هذه الثغرة — إلى جانب ثلاث مشاكل أخرى لتلف الذاكرة (CVE-2026-42946, CVE-2026-40701, CVE-2026-42934) — بشكل مستقل بواسطة نظام التحليل الأمني لـ depthfirst بعد نقرة واحدة لدمج مصدر NGINX.
يستخدم محرك السكربت في NGINX عملية من مرحلتين: أولاً حساب حجم المخزن المؤقت المطلوب، ثم نسخ البيانات إليه. تُعيّن علامة is_args على المحرك الرئيسي عندما يحتوي استبدال rewrite على ?، لكن مرحلة حساب الطول تعمل على محرك فرعي مصفّر حديثًا. لذلك:
is_args = 0 → تُرجع طول الالتقاط الخام.is_args = 1 → تستدعي ngx_escape_uri مع NGX_ESCAPE_ARGS، لتوسيع كل بايت قابل للتهريب إلى 3 بايتات.يؤدي النسخ إلى تجاوز سعة المخزن المؤقت في الكومة صغير الحجم ببيانات URI يتحكم فيها المهاجم. يستخدم الاستغلال تقنية heap feng shui عبر الطلبات لإفساد مؤشر cleanup لـ ngx_pool_t المجاور (يُرشّ عبر أجسام POST، لأن بايتات URI لا يمكن أن تحتوي على بايتات فارغة)، ويعيد توجيهه إلى بنية ngx_pool_cleanup_s مزيّفة تستدعي system() عند تدمير التجمع.
اقرأ المزيد عن هذه الثغرة في قناتنا: https://t.me/p3Nt3st3rsTAr
| المنتج | المتأثر | أُصلح في |
|---|---|---|
| NGINX Open Source | 0.6.27 – 1.30.0 | 1.31.0, 1.30.1 |
| NGINX Plus | R32 – R36 | R36 P4, R35 P2, R32 P6 |
النشرة الأمنية الكاملة من البائع: https://my.f5.com/manage/s/article/K000160932
تم الاختبار على Ubuntu 24.04.3 LTS.
./setup.sh — إنشاء الحاوية.docker compose -f env/docker-compose.yml up — تشغيل خادم NGINX المُصاب.python3 poc.py --shell — فتح شل.