آسیب پذیری در Docker که به شما امکان می دهد از کانتینر فرار کنید

در جعبه ابزار برای مدیریت کانتینرهای Docker ایزوله لینوکس شناخته شده است آسیب پذیری (CVE-2018-15664) که تحت مجموعه ای از شرایط به شما امکان می دهد در صورت داشتن توانایی راه اندازی تصاویر خود در سیستم یا با دسترسی به یک کانتینر در حال اجرا، از یک کانتینر به محیط میزبان دسترسی داشته باشید. مشکل در تمام نسخه‌های Docker ظاهر می‌شود و رفع نشده باقی می‌ماند (پیشنهاد شده، اما هنوز پذیرفته نشده است، وصله، که تعلیق کانتینر را در حین انجام عملیات با FS اجرا می کند).

این آسیب‌پذیری به فایل‌ها اجازه می‌دهد تا هنگام اجرای دستور «docker cp» از یک کانتینر به قسمت دلخواه سیستم فایل سیستم میزبان استخراج شوند. استخراج فایل با حقوق ریشه انجام می شود که خواندن یا نوشتن هر فایلی را در محیط میزبان ممکن می کند که برای به دست آوردن کنترل سیستم میزبان کافی است (مثلاً می توانید /etc/shadow را بازنویسی کنید).

حمله تنها زمانی انجام می شود که مدیر دستور "docker cp" را برای کپی کردن فایل ها از داخل یا از کانتینر اجرا کند. بنابراین، مهاجم باید به نحوی مدیر Docker را در مورد نیاز به انجام این عملیات متقاعد کند و مسیر مورد استفاده در هنگام کپی را پیش بینی کند. از سوی دیگر، یک حمله می تواند انجام شود، به عنوان مثال، زمانی که سرویس های ابری ابزارهایی را برای کپی کردن فایل های پیکربندی در یک ظرف، که با استفاده از دستور "docker cp" ساخته شده است، ارائه می دهند.

مشکل ناشی از نقص در کاربرد تابع است FollowSymlinkInScopeکه مسیر مطلق را در فایل سیستم اصلی بر اساس مسیر نسبی با در نظر گرفتن محل قرارگیری کانتینر محاسبه می کند. هنگام اجرای دستور "docker cp" کوتاه مدت شرایط مسابقه، که در آن مسیر قبلاً تأیید شده است، اما عملیات هنوز انجام نشده است. از آنجایی که کپی در زمینه سیستم فایل اصلی سیستم میزبان انجام می شود، در یک بازه زمانی مشخص، می توانید مدیریت کنید تا پیوند را با مسیر دیگری جایگزین کنید و کپی داده ها را در یک مکان دلخواه در سیستم فایل خارج از ظرف

از آنجایی که پنجره زمانی برای رخ دادن شرایط مسابقه در یک آماده بسیار محدود است بهره برداری از نمونه اولیه هنگام انجام عملیات کپی از یک کانتینر، در کمتر از 1٪ موارد هنگام جایگزینی چرخه ای یک پیوند نمادین در مسیر مورد استفاده در عملیات کپی، امکان دستیابی به یک حمله موفقیت آمیز وجود داشت (حمله موفقیت آمیز پس از تقریباً 10 ثانیه تلاش انجام شد. برای کپی کردن مداوم فایل در یک حلقه با دستور "docker cp").

با انجام یک عملیات کپی در یک کانتینر، می توانید تنها در چند تکرار به یک حمله بازنویسی فایل تکراری بر روی سیستم میزبان دست یابید. احتمال حمله به این دلیل است که هنگام کپی کردن در یک کانتینر، از مفهوم "chrootarchive" استفاده می شود، که طبق آن فرآیند archive.go آرشیو را نه در chroot ریشه کانتینر، بلکه در chroot از کانتینر استخراج می کند. دایرکتوری والد مسیر هدف، توسط مهاجم کنترل می شود و اجرای کانتینر را متوقف نمی کند (chroot به عنوان نشانه ای برای بهره برداری از شرایط مسابقه استفاده می شود).

منبع: opennet.ru

اضافه کردن نظر