يعد NGINX، المملوك لشركة F5، خادم وكيل عكسي يستخدم بشكل كبير في العالم. تعد NGINX أيضًا بنية تحتية مهمة للإنترنت العالمي. كشفت شركة أبحاث أمنية الآن عن ثغرة أمنية عالية الخطورة في البرنامج. تم ترقيم الثغرة الأمنية CVE-2026-42945. توجد مشكلة تجاوز سعة المخزن المؤقت لكومة الذاكرة المؤقتة في محرك البرامج النصية NGINX والتي كانت موجودة منذ 18 عامًا.

يحتاج المهاجم فقط إلى إرسال طلب HTTP تم إنشاؤه بعناية إلى خادم NGINX مكشوف للاستيلاء على الخادم عن بُعد. تمثل NGINX ما يقرب من 30% من خادم موقع الويب العالمي الأساسي وحقول الوكيل العكسي، لذلك قد تؤثر هذه الثغرة الأمنية على عدد كبير من خدمات الإنترنت.

يؤثر على وجود NGINX ومشتقاته المتعددة:

تم تقديم هذه الثغرة الأمنية في الأصل في الإصدار 0.6.27 من NGINX الذي تم إصداره في عام 2008. وبعد ذلك، لم يتم اكتشاف الثغرة الأمنية لفترة طويلة وظلت كامنة حتى الآن. تؤثر هذه الثغرة الأمنية على إصدارات NGINX 0.6.27~1.30.0، وتؤثر أيضًا على مشتقات NGINX المختلفة التي توفرها F5 للعملاء التجاريين. تشمل المنتجات المشتقة المتأثرة، على سبيل المثال لا الحصر، NGINX WAF، وF5 WAF، وNGINX Gateway Fabric، وNGINX Ingress Controller، وما إلى ذلك.

ظروف إثارة الثغرة الأمنية مخفية جدًا. عند ظهور الإرشادات التالية في ملف تكوين NGINX في نفس الوقت، سيتم تنشيط الثغرة الأمنية:

rewrite ^/api/(.*)$ /internal?migrated=true;  # 重写规则末尾带 “?” set $original_endpoint $1;                     # 使用正则捕获组

وأشار فريق البحث الذي اكتشف الثغرة الأمنية إلى أن السبب الجذري للثغرة يكمن في محرك البرامج النصية (ngx_http_script.c) الخاص بـ ngx_http_rewrite_module. عندما تحتوي تعليمات إعادة الكتابة على علامة استفهام، يتم تعيين علامة is_args المستمرة، ولكن في مرحلة حساب طول التعليمات المحددة اللاحقة، يستخدم المحرك محركًا فرعيًا جديدًا تم مسحه، مما يتسبب في تخطي منطق الهروب من عنوان URL أثناء حساب الطول.

في مرحلة النسخ الفعلية، يتم استخدام المحرك الرئيسي لتشغيل وظيفة ngx_escape_uri للهروب من الأحرف مثل + و&. يتم تخصيص المخزن المؤقت وفقًا للطول الذي لم يتم تجاوزه ولكن تتم كتابة المحتوى الموسع، مما يؤدي في النهاية إلى تجاوز سعة المخزن المؤقت لكومة الذاكرة المؤقتة التي يمكن التحكم فيها.

أصدر F5 إصدار NGINX 1.31.0/1.30.1 لإصلاح:

بعد تلقي إشعار الثغرة الأمنية، أكد F5 الثغرة بسرعة. وبعد أن قامت شركة F5 بإعداد الإصلاح، أطلق الباحثون الثغرة الأمنية علنًا. ولذلك، يحتاج المستخدمون الذين يستخدمون NGINX ومشتقاته حاليًا إلى الترقية إلى الإصدار الأحدث الذي لم يتأثر. يحتاج الإصدار المفتوح المصدر من NGINX إلى الترقية إلى الإصدار 1.30.1 أو 1.31.0. تتأثر الإصدارات الأقدم الأخرى، مثل الإصدارات 0.6.27~1.30.0، بالثغرة الأمنية.

للحصول على معلومات الإصدار حول المشتقات الأخرى، يرجى الاطلاع على نشرة الأمن F5: https://my.f5.com/manage/s/article/K000160932