
تحليل تقني متعمق لـ CVE-2025-1974 (IngressNightmare)، وهي ثغرة تنفيذ تعليمات برمجية عن بُعد (RCE) حرجة في وحدة التحكم في قبول التحقق (validating admission controller) لـ ingress-nginx في Kubernetes، بما في ذلك السبب الجذري، سلسلة الاستغلال، وإرشادات الكشف.
في هذا المستند، نقدم بحثًا حول الثغرة الأمنية CVE-2025-1974 التي تؤثر على مكون ingress-nginx (وحدة التحكم في القبول المُصدِّق) لـ Kubernetes.
CVE-2025-1974 هي ثغرة حرجة (CVSS 3.1 9.8) تمثل تنفيذًا عن بُعد للكود (RCE) غير موثَّق في سياق عملية ingress-nginx. عند تنفيذ الهجوم، يمكن للمهاجم الذي لديه وصول إلى شبكة الـ pods (أو طريقة لتوصيل AdmissionReview إلى webhook المُصدِّق) تحقيق تنفيذ كود عشوائي في pod وحدة التحكم، مما قد يؤدي إلى كشف الأسرار (Secrets) والسيطرة على الكتلة (cluster).
Ingress-nginx هو أحد أكثر وحدات التحكم في Ingress استخدامًا في Kubernetes (تشير التقديرات إلى استخدامه في عشرات النسبة المئوية من الكتل)، لذا فإن التأثير العملي للثغرة مرتفع جدًا. تم نشر الوصف والتحليل الفني والتوصيات الرسمية للإصلاحات من قبل Kubernetes والباحثين في Wiz وعدد من مدونات البائعين.
تحليل CVE-2025-1974 خطوة بخطوة وإعداد المواد اللازمة لكتابة تقرير شامل:
يتم إجراء هذا البحث لأغراض تعليمية وأخلاقية فقط ويستهدف البيئات الاختبارية/الخاضعة للرقابة. لا تقم تحت أي ظرف بتشغيل أي استغلالات (exploits/PoC) ضد كتل الآخرين أو مثيلات متاحة للجمهور بدون إذن كتابي من المالك. إن نشر PoC كامل السلاح ("weaponized") بشكل علني يزيد بشكل كبير من خطر إساءة الاستخدام — في الجزء العام، من الأفضل تقديم PoC آمن ومنهجية. (تؤكد الإشعارات الرسمية والبائعون أيضًا على الحذر عند نشر الاستغلالات).
cpe:2.3:a:kubernetes:ingress-nginx_controller:<version> — إصدارات ingress-nginx المعرضة للخطر (تُحدد الإصدارات المحددة في الإشعارات الرسمية؛ قم بتحديث القيم عند النشر النهائي).شروط التهيئة التي تكون الثغرة فيها سارية المفعول:
ملخص موجز.
تم اكتشاف الثغرة في مكون وحدة التحكم في القبول المُصدِّق (Validating Admission Controller) لوحدة التحكم Ingress-NGINX وترتبط بكيفية قيام هذا المكون بإنشاء وفحص تهيئة NGINX المؤقتة بناءً على كائنات Ingress / AdmissionReview الواردة. أثناء المعالجة، يقوم المُتحكم بإنشاء nginx.conf وتشغيل فحص التهيئة (nginx -t). عند عدم تنقية حقول Ingress/AdmissionReview بشكل كافٍ، يمكن للمهاجم إدراج أجزاء مُعدة خصيصًا تدخل إلى التهيئة المُنشأة، مما يؤدي في النهاية إلى تنفيذ أوامر داخل عملية المُتحكم — أي تنفيذ كود عن بُعد (RCE) في pod الخاص بـ ingress-nginx.
AdmissionReview/Ingress الواردة التي يستقبلها webhook المُصدِّق لوحدة التحكم بيانات مصدرية لتوليد تهيئة NGINX (بما في ذلك حقول التعليقات (annotations) وإعدادات الخلفية (backend) وغيرها).Ingress ضار أو AdmissionReview مباشر إدراج سلاسل متحكم بها في قوالب / أجزاء التهيئة. عند فحص / تحميل nginx.conf هذا، يمكن أن تؤدي عملية الفحص (nginx -t) والعمليات اللاحقة على ملف التهيئة إلى تنفيذ كود عشوائي، أو كتابة / تشغيل ملفات، أو تشغيل أوامر في سياق المُتحكم.AdmissionReview إلى webhook المُصدِّق (وصول من شبكة الـ pods أو وصول شبكة مباشر)؛ عدم وجود إجراءات تعويضية مثل NetworkPolicy أو قيود RBAC أو مصادقة إضافية على webhook. في بعض السيناريوهات، يمكن تجاوز أذونات Create/Update عن طريق إرسال AdmissionReview مُعدل مباشرة إلى webhook.
الاستغلال الناجح يتيح تنفيذ كود في حاوية ingress-nginx، مما يسمح عادةً بـ:
ingress-nginx-controller-admission وخدمة ingress-nginx-controller من مصادر غير قياسية (في التقارير — من حاويات من نوع alpine)، وهو ما لا ينبغي أن يحدث في التشغيل العادي.nginx -t وإعادة تشغيل وحدة التحكم المفاجئة، بالإضافة إلى عمليات كتابة ملفات غير متوقعة من عملية ingress-nginx.Ingress-NGINX هو أحد أكثر وحدات التحكم في Ingress استخدامًا في Kubernetes (يُستخدم على نطاق واسع لتنظيم الوصول الخارجي إلى الخدمات). تعمل وحدة التحكم كوكيل عكسي (reverse proxy): تستقبل حركة المرور الخارجية وتوجّهها إلى Service/Pod المناسب بناءً على مجموعة قواعد Ingress. يتمتع مشروع Ingress-NGINX بشعبية كبيرة وله حصة كبيرة من التثبيت في الكتل المتصلة بالإنترنت.
يُشار إلى Ingress-NGINX في وثائق Kubernetes كمثال مرجعي لوحدة تحكم Ingress. وفقًا للتقديرات، تستخدم نسبة كبيرة من الكتل المفتوحة هذا المنتج بالذات؛ تشير بعض الدراسات إلى أن حوالي 41% من الكتل المتاحة للجمهور تستخدم Ingress-NGINX. بسبب هذا الانتشار الواسع والدور المحوري في توجيه حركة المرور، فإن الثغرات في هذا المكون لها تأثير عملي مرتفع.
validate.nginx.ingress.kubernetes.io). هذا يجعله سهل الوصول من داخل الكتلة.Ingress / AdmissionReview مُعد خصيصًا، حيث تحتوي حقول معينة على سلاسل ضارة لم تخضع للتصفية المناسبة.nginx.conf بناءً على هذه البيانات المدخلة وتنفيذ nginx -t / عمليات فحص أخرى.تكون هذه الثغرات خطيرة بشكل خاص عند دمجها مع عيوب أخرى: pod مخترق (أو SSRF في تطبيق عام) + webhook مُصدِّق مكشوف يعطي فرصة عالية للاختراق الكامل. لذلك، يجب أن يأخذ تحليل الحوادث في الاعتبار سلسلة التبعيات والنواقل المحتملة، وليس فقط إصدار ingress-nginx.