
أداة اختبار بسيطة للمساعدة في اكتشاف ثغرات حقن التعليقات التوضيحية (annotation injection) في وحدات تحكم Ingress لـ NGINX في Kubernetes. يرسل هذا النص طلب AdmissionReview مخصصًا لمحاكاة مسار استغلال محتمل من CVE-2025-1974 ويتحقق من وجود علامات على تفسير خاطئ للتعليقات التوضيحية في سجلات وحدة التحكم.
يختبر هذا السكربت ثغرات حقن التعليقات التوضيحية (annotation injection) في مجموعات Kubernetes باستخدام وحدة تحكم الدخول NGINX. وهو مخصص لأغراض الكشف فقط فيما يتعلق بـ CVE-2025-1974، والذي يسمح بتعليقات توضيحية ضارة تؤثر على تكوين NGINX.
تتعلق الثغرة، التي كشفت عنها Wiz.io (منشور المدونة)، بحقن تعليقات توضيحية لا يتم معالجتها بشكل صحيح من قبل وحدة التحكم. على سبيل المثال:
nginx.ingress.kubernetes.io/auth-url: "http://placeholder/#; error_log /root/this_path_shouldnt_exist.log debug; #"
يمكن أن يؤدي ذلك إلى سلوك غير متوقع في تكوين NGINX وأخطاء في الأذونات إذا تمت معالجتها. في سيناريوهات أكثر تقدماً، يمكن ربط هذا النوع من الحقن مع أخطاء تكوين أخرى لتحقيق تنفيذ الأوامر عن بعد (RCE).
AdmissionReview مصممة خصيصاً من ملف YAML./validate لوحدة التحكم في القبول.admission_review.yaml: يحتوي على طلب AdmissionReview المصمم.main.py: يرسل الحمولة إلى وحدة التحكم.أولاً، قم بتوجيه المنفذ لوحدة التحكم في القبول:
kubectl port-forward -n ingress-nginx svc/ingress-nginx-controller-admission 8443:443
ثم قم بتشغيل:
python main.py --url https://localhost:8443
تحقق من سجلات وحدة التحكم في الدخول:
kubectl logs -n ingress-nginx -l app.kubernetes.io/component=controller
قد ترى:
nginx: [emerg] open() "/root/this_path_shouldnt_exist.log" failed (13: Permission denied)
يشير هذا إلى أن التعليق التوضيحي تم تنفيذه بشكل غير صحيح كتوجيه.
للاستخدام التعليمي والاختبار المصرح به فقط. لا تقم بتشغيله على أنظمة دون إذن.
استخدم هذه الأداة للتحقق مما إذا كانت مجموعتك معرضة لحقن التعليقات التوضيحية عبر NGINX Ingress. قد يكون استغلال هذه الثغرة جزءاً من سلسلة هجوم أوسع تؤدي إلى تنفيذ الأوامر عن بعد.