🚨 یک مجموعه آسیبپذیری خطرناک به نام IngressNightmare در کنترلر Ingress NGINX کشف شده که به مهاجمان اجازه میدهد بدون احراز هویت، کد دلخواه را در کلاستر Kubernetes اجرا کرده و کنترل کامل آن را در دست بگیرند.
💥 جزئیات آسیبپذیریها:
این نقصها بر نسخههای پیش از v1.11.5
و v1.12.1
تأثیر میگذارند و شامل ۴ آسیبپذیری بحرانی هستند:
-
CVE-2025-1097 – تزریق پیکربندی از طریق annotation مربوط به
auth-tls-match-cn
که اجازه دور زدن تأیید TLS را میدهد.
🔒 CVSS: 8.8 -
CVE-2025-1098 – امکان تزریق از طریق
mirror-target
وmirror-host
که منجر به هدایت ترافیک یا اجرای کد غیرمجاز میشود.
🔒 CVSS: 8.8 -
CVE-2025-24514 – تزریق آدرس URL مخرب از طریق
auth-url
که میتواند موجب دسترسی غیرمجاز شود.
🔒 CVSS: 8.8 -
CVE-2025-1974 – خطرناکترین مورد؛ اجرای کد از راه دور بدون احراز هویت از طریق پیکربندی
nginx -t
که میتواند به سرقت اسرار و تسلط کامل بر کلاستر منجر شود.
🔥 CVSS: 9.8
⚙️ نحوه حمله
مهاجم با یافتن کنترلر آسیبپذیر (مثلاً از طریق Shodan)، یک شیء Ingress مخرب میسازد و آن را بدون احراز هویت به Admission Webhook ارسال میکند. سپس، تنظیمات مخرب به پیکربندی NGINX تزریق شده و هنگام اجرای nginx -t
اجرا میشوند. از این طریق، مهاجم به اسرار کلاستر دسترسی پیدا کرده و میتواند به صورت افقی گسترش یابد.
⚙️ نحوه حمله
مهاجم با یافتن کنترلر آسیبپذیر (مثلاً از طریق Shodan)، یک شیء Ingress مخرب میسازد و آن را بدون احراز هویت به Admission Webhook ارسال میکند. سپس، تنظیمات مخرب به پیکربندی NGINX تزریق شده و هنگام اجرای nginx -t
اجرا میشوند. از این طریق، مهاجم به اسرار کلاستر دسترسی پیدا کرده و میتواند به صورت افقی گسترش یابد.
🛡️ راهکارهای مقابله:
-
برای بررسی اینکه آیا کنترلر شما آسیبپذیره یا نه، از دستور زیر استفاده کنید:
kubectl get pods –all-namespaces –selector app.kubernetes.io/name=ingress-nginx
سپس با استفاده از دستور زیر، نسخهی کنترلر را بررسی کن:
kubectl describe pod [اسم پاد] -n [نام namespace]
اگر نسخهی کنترلر آسیبپذیر بود، برای رفع آن به یکی از نسخههای ایمن (مثلاً ۱.۱۱.۵ یا ۱.۱۲.۱) ارتقاء بده. برای بروزرسانی از Helm، دستور زیر را اجرا کن:
helm upgrade ingress-nginx ingress-nginx/ingress-nginx –version 1.12.1
اگر امکان بروزرسانی سریع وجود نداره، میتونی webhook رو غیرفعال کنی. برای این کار:
در Helm مقدار controller.admissionWebhooks.enabled رو false قرار بده
یا ValidatingWebhookConfiguration مربوط به ingress-nginx رو حذف کنهمچنین بهتره با استفاده از NetworkPolicy، دسترسی به admission webhook رو فقط به منابع قابل اعتماد محدود کنی تا از سوءاستفادههای خارجی جلوگیری بشه.
در کنار این موارد، اگر عملکرد کنترلر دچار کندی شده یا خطاهای TLS و مسیر دهی غیرعادی دیدی، میتونی موارد زیر رو بررسی کنی:
-
بررسی و بهروزرسانی secrets مربوط به TLS
-
بررسی تنظیمات DNS و مسیرها
-
افزایش تعداد replicaهای ingress-nginx
-
-
یک نظر