needhelp
← Back to blog

NGINX Rift (CVE-2026-42945): فيضان كومة عمره 18 عاماً في وحدة إعادة الكتابة

by xingwangzhe
NGINX
CVE
Security
RCE
Heap Overflow
Web Server

NGINX Rift (CVE-2026-42945, CVSS 9.2): فيضان كومة حرج في وحدة إعادة كتابة NGINX، اكتشف بشكل مستقل بواسطة نظام تحليل AI من depthfirst. أُدخلت في 2008 وأثرت على 18 عاماً من إصدارات NGINX، تتيح لمهاجم غير مصادق تحقيق تنفيذ كود عن بُعد عبر طلب HTTP مصمم واحد.

الثغرة التي كانت مختبئة في العلن

في 13 مايو 2026، F5 و depthfirst كشفا معاً عن CVE-2026-42945 — فيضان كومة حرج في ngx_http_rewrite_module في NGINX. الثغرة كانت جالسة في قاعدة الكود منذ 2008، أُدخلت في NGINX 0.6.27، مؤثرة على كل إصدار لاحق حتى 1.30.0.

ما يجعل هذا الاكتشاف ملحوظاً بشكل خاص هو كيف وُجد: ليس بواسطة باحث بشري يدقق الكود يدوياً، بل بواسطة نظام تحليل الثغرات المستقل من depthfirst. نظام الذكاء الاصطناعي وُجه إلى كود مصدر NGINX، وخلال ست ساعات أشار إلى مشكلة فيضان الكومة التي فاتت الاكتشاف البشري لـ 18 عاماً.

الخلفية التقنية

التصميم ثنائي التمرير

عندما يقيم NGINX تعليمة rewrite أو set، يعمل في تمريرين:

  1. تمرير الطول: يحسب حجم المخزن المؤقت اللازم
  2. تمرير النسخ: يخصص مخزناً ويحفظ البيانات

السبب الجذري: علامة is_args اليتيمة

الثغرة تعيش في src/http/ngx_http_script.c. تحتوي سلسلة استبدال تعليمة rewrite على علامة استفهام (?)، الدالة ngx_http_script_start_args_code تضع علامة على محرك البرنامج النصي.

المشكلة: هذه العلامة لا تُعاد تعيينها أبداً.

التحقق من تكوينك

Terminal window
grep -rn 'rewrite.*\?.*\$[0-9]' /etc/nginx/

إذا أعاد هذا أي نتائج، تكوينك متأثر.

التخفيف

الإصدار الإجراء
NGINX Open Source ترقية إلى 1.31.0 أو 1.30.1
NGINX Plus R36 تطبيق R36 P4

حل بديل: مجموعات الالتقاط المسماة

# ضعيف — مجموعات التقاط غير مسماة مع ? في الاستبدال
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;

الآثار الأوسع: ثغرات يكتشفها الذكاء الاصطناعي

CVE-2026-42945 ملحوظة ليس فقط لشدتها، بل لـ كيف اكتُشفت. نظام ذكاء اصطناعي مستقل وجد خطأ في قاعدة كود دققها آلاف المهندسين وباحثي الأمن والمساهمين مفتوحي المصدر على مدى 18 عاماً — في ست ساعات.

References

Share this page