
CVE-2026-42945
تجاوز سعة المخزن المؤقت على الكومة (Heap) حرج في NGINX
CVE-2026-42945 (المعروف أيضًا باسم NGINX Rift) هو ثغرة أمنية حرجة في الوحدة النمطية ngx_http_rewrite_module الخاصة بـ NGINX.
تنشأ الثغرة من عدم اتساق في حساب حجم المخزن المؤقت بين مرحلة التحقق من الطول ومرحلة النسخ/الهروب الفعلية عند معالجة قواعد إعادة كتابة URI.
| الحالة | الإصدارات |
|---|---|
| متأثر | 0.6.27 → 1.30.0 |
| تم الإصلاح | 1.30.1 و 1.31.0+ |
| الحالة | الإصدارات |
|---|---|
| متأثر | R32 → R36 |
| تم الإصلاح | R36 P4, R32 P6, 37.0.0+ |
ملاحظة: العديد من منتجات F5 NGINX (وحدة التحكم في الدخول، App Protect، Gateway Fabric، إلخ) تتأثر إذا كانت تعمل على إصدارات أساسية معرضة للخطر.
يتم تشغيل الخطأ بواسطة مجموعة محددة من التوجيهات:
rewrite حيث تحتوي سلسلة الاستبدال على ? (تفعيل علامة is_args).rewrite أو if أو set آخر يستخدم الالتقاطات غير المسماة في PCRE ($1, $2, إلخ).is_args = false) → يقلل من حجم المخزن المؤقت المطلوب.is_args = true) → تستدعي ngx_escape_uri() مع NGX_ESCAPE_ARGS.+, &, %, إلخ) في URI فيضانًا في الكومة.| التأثير | الخطورة | الوصف |
|---|---|---|
| حرمان الخدمة (DoS) | عالية |
درجة CVSS v4.0: 9.2 (حرجة)
درجة CVSS v3.1: 8.1 (عالية)
استبدال الالتقاطات غير المسماة بـ الالتقاطات المسماة:
rewrite ^/users/([0-9]+)/profile/(.*)$ /profile.php?id=$1&tab=$2 last;
rewrite ^/users/(?<user_id>[0-9]+)/profile/(?<section>.*)$ /profile.php?id=$user_id&tab=$section last;
التوصية الرئيسية: تدقيق جميع قواعد إعادة الكتابة التي تجمع بين سلاسل الاستبدال المحتوية على ? والاستخدام اللاحق لـ $1, $2, إلخ.
CVE-2026-42945 هي واحدة من أهم ثغرات NGINX في السنوات الأخيرة بسبب عمرها الطويل، وسهولة استغلالها، وإمكانية تنفيذ الكود عن بُعد (RCE).
تصرف الآن — قم بتصحيح منصاتك وتحديث تكويناتك.
صنع بـ ❤️ من أجل مجتمع الأمان
| تعطل موثوق لعملية العامل (worker) |
| تنفيذ الكود عن بُعد (RCE) | حرجة (شريطة) | ممكن عند تعطيل ASLR أو تجاوزه |
| تعقيد الهجوم | منخفض | طلب HTTP واحد، بدون مصادقة |