کشف آسیب‌پذیری‌های جدید در کنترل‌کننده NGINX Ingress در Kubernetes

کشف آسیب‌پذیری‌های جدید در کنترل‌کننده NGINX Ingress در Kubernetes

تاریخ ایجاد

سه آسیب‌پذیری با شدت بالا در کنترل‌کننده NGINX Ingress در Kubernetes شناسایی شده‌اند که اگر مهاجمان بتوانند تنظیمات Ingress object را کنترل کنند، می‌توانند به داده‌های محرمانه در Kubernetes دسترسی پیدا کنند. این آسیب‌پذیری‌ها با شناسه‌های CVE-2022-4886 دارای درجه حساسیت 8.8، CVE-2023-5043 دارای درجه حساسیت 7.6 و CVE-2023-5044 دارای درجه حساسیت 7.6 قابل پیگیری بوده و در نسخه 1.19  NGINX برطرف شده‌اند.
این آسیب‌پذیری‌ها به مهاجمان امکان می‌دهند که دستورات دلخواه خود را در فرآیند ingress controller اجرا کنند و به سطح دسترسی API server Kubernetes که دارای دسترسی بالایی است، دست‌یابند. API server Kubernetes یک نقطه مرکزی برای مدیریت و تعامل با منابع Kubernetes است. 

آسیب‌پذیری با شناسه CVE-2022-4886 به علت عدم اعتبارسنجی مناسب در فیلد spec.rules[].http.paths[].path به وجود آمده است. این فیلد مشخص می‌کند که کدام مسیر HTTP  وارد شده توسط کاربر به چه سرویس داخلی Kubernetes هدایت شود. با سوءاستفاده از این آسیب‌پذیری، مهاجم می‌تواند به فایل داخلی ingress controller که حاوی توکن service account  است، دسترسی پیدا کند. این توکن service account گواهینامه احراز هویت ingress controller  برای برقراری ارتباط با API server Kubernetes است.

شناسه‌های CVE-2023-5043 و CVE-2023-5044 مربوط به دو آسیب‌پذیری هستند که به علت عدم فعال بودن پارامتر "--enable-annotation-validation" در ingress controller به وجود آمده‌اند. با استفاده از این پارامتر، ingress controller  محدودیت‌های بیشتری بر روی فضای نام annotation های Ingress object در نظر می‌گیرد. annotation ها فضای نامی هستند که در آن تغییرات رفتار ingress controller قابل تعریف هستند. با سوءاستفاده از annotation های   configuration-snippet و permanent-redirect، مهاجم می‌تواند کد دلخواه خود را در ingress controller  اجرا کند.
برای کاهش تاثیرات این آسیب‌پذیری و رفع آن، توصیه می‌شود که آخرین به‌روزرسانی NGINX به نسخه 1.19 انجام شده و دستور "--enable-annotation-validation" را در محیط خط فرمان پیکربندی اجرا کنید. همچنین، برای جلوگیری از دسترسی غیرمجاز به توکن service account، می‌توان از راه‌حل‌های امنیتی توصیه شده مانند ARMO  استفاده شود که ingress controller را با استفاده از روش‌هایی مانند encryption-in-transit  و encryption-in-rest محافظت می‌کند.

منابع: