
🛡️ سكربت لاختبار ثغرة NGINX CVE-2026-42945
يجب على المؤسسات التي تشغّل NGINX Open Source أو NGINX Plus أو بوابات NGINX/وحدات التحكم (ingress/controllers) التحقق مما إذا كانت متأثرة بـ CVE-2026-42945 وتطبيق التصحيح أو إعادة الضبط قبل وصول محاولات الاستغلال إلى الحواف الإنتاجية.
يوفر هذا المستودع ماسحًا للقراءة فقط وغير استغلالي للاستخدام الدفاعي المصرّح به على الأنظمة التي تملكها أو المخوَّل باختبارها.
| العنصر | التفاصيل |
|---|---|
| CVE | CVE-2026-42945 |
| الاسم | NGINX Rift |
| المكوّن | ngx_http_rewrite_module (تجاوز سعة المخزن المؤقت في الكومة heap buffer overflow) |
| الإصدارات المتأثرة | NGINX Open Source 0.6.27 حتى 1.30.0 |
| الإصدارات المُصلَّحة | 1.30.1، 1.31.0 (+ حزم دعم من المورّد) |
| CVSS | 9.2 (حرجة) |
يتطلب الاستغلال تكوين rewrite محددًا:
rewrite يستخدم التقاط PCRE بدون اسم ($1، $2، …) في الاستبدال?rewrite أو if أو set آخر في نفس نطاق server/location يستخدم ذلك الالتقاطالأثر:
لا يرسل طلبات استغلال ولا يحاول تعطيل العمال.
cd nginx-cve-2026-42945
chmod +x scan_nginx_rift.py
# الأفضل: التشغيل على كل مضيف NGINX بصلاحيات sudo
sudo python3 scan_nginx_rift.py --local
# أو فحص تفريغ تكوين كامل
sudo nginx -T 2>&1 | tee /tmp/nginx-full.txt
python3 scan_nginx_rift.py --local --config /tmp/nginx-full.txt
# فحص بانر بعيد سلبي (الإصدار فقط)
python3 scan_nginx_rift.py --url https://your-site.example/
# JSON للأتمتة
python3 scan_nginx_rift.py --local --json --fail-on high
رمز الخروج 1 عندما يكون الخطر عالٍ HIGH أو حرج CRITICAL (استخدم --fail-on لضبط بوابات CI).
قم بالترقية إلى NGINX 1.30.1 / 1.31.0+ أو حزمة الأمان من نظام التشغيل/المورّد.
أعد تشغيل العمال بعد الترقية (systemctl restart nginx)، وليس فقط reload.
دقّق التكوين الكامل: sudo nginx -T وابحث عن قواعد rewrite التي تحتوي على $1/$2 و?.
تخفيف مؤقت: استخدم الالتقاطات المسماة named captures بدلاً من $1، $2:
# نمط ثغِرة (مبسّط)
rewrite ^/api/(.*)$ /internal?migrated=true;
set $original_path $1;
# نمط أكثر أمانًا
rewrite ^/api/(?<path>.*)$ /internal?migrated=true;
set $original_path $path;
تأكد من بقاء ASLR مفعّلاً على لينكس (randomize_va_space=2).
راجع Kubernetes ingress ومخططات Helm والتكوينات المولّدة — وليس فقط .
استخدم فقط على البنية التحتية المصرّح لك بتقييمها. قد يؤدي الفحص غير المصرّح به إلى مخالفة سياسات أو قانون.
| الفحص | الطريقة |
|---|
| الإصدار | محلي nginx -v أو ترويسة Server سلبية |
| محفّز التكوين | تحليل استدلالي لـ nginx -T أو ملف تكوين |
| ASLR (لينكس) | /proc/sys/kernel/randomize_va_space |
| الإرشاد | خطوات المعالجة حسب الأولوية |
| الخطر | المعنى |
|---|
| CRITICAL | إصدار ثغِرة + نمط rewrite يطابق المحفّز المعروف |
| HIGH | إصدار ثغِرة مع rewrite مشبوه، أو إصدار غير معروف مع محفّز محتمل |
| MEDIUM | إصدار ثغِرة، لا يوجد محفّز في التكوين المفحوص (ما زال يتطلب التصحيح) |
| LOW | إصدار مُصلَّح لكن تبقى أنماط rewrite خطرة |
| INFO | مُصلَّح ولا توجد أنماط محفّز في التكوين المفحوص |
/etc/nginx/nginx.conf