آسیب پذیری جدید cgroups لینوکس کرنل، میتواند به مهاجمان اجازه فرار از کانتینر را دهد

جزئیاتی در مورد آسیبپذیری cgroups، با شدت بالا وصلهشده در هسته لینوکس به دست آمده است که میتواند به طور بالقوه برای فرار از یک کانتینر به منظور اجرای دستورات دلخواه در میزبان کانتینر مورد سوء استفاده قرار گیرد.
این نقص در یک ویژگی هسته لینوکس به نام گروههای کنترل است که به آن cgroups نسخه ۱ (v1) نیز گفته میشود و اجازه میدهد فرآیندها در گروههای سلسله مراتبی سازماندهی شوند و در نتیجه محدودیت و نظارت بر استفاده از منابعی مانند CPU، حافظه و ورودی/خروجی دیسک و شبکه را ممکن میسازد.
این مشکل که با عنوان CVE-2022-0492 (امتیاز CVSS: 7.0) نامگذاری شد، مربوط به یک مورد افزایش امتیاز در عملکرد cgroups v1 release_agent است. اسکریپتی که پس از پایان هر فرآیند در cgroup اجرا میشود.
به گفته یووال آبراهامی، محقق واحد ۴۲ در گزارشی که این هفته منتشر شد: «این مسئله به عنوان یکی از سادهترین افزایش امتیازهای لینوکس است که اخیرا کشف شده: هسته لینوکس به اشتباه یک عملیات سطح بالا را در اختیار کاربران غیرمجاز قرار داد.»
page man برای cgroups عملکرد خود را به شرح زیر توضیح می دهد –
این که آیا برنامه release_agent هنگام خالی شدن یک cgroup خاص فراخوانی میشود یا خیر، با مقدار موجود در فایل notify_on_release در فهرست cgroup مربوطه، تعیین میگردد. اگر این فایل حاوی مقدار ۰ باشد، برنامه release_agent فراخوانی نمیشود. اگر حاوی مقدار ۱ باشد، برنامه release_agent فراخوانی میشود. مقدار پیش فرض این فایل در مرکز cgroup صفر است.
تیم اطلاعاتی تهدید شبکههای Palo Alto خصوصا اشاره کرد که این اشکال نتیجه عدم وجود یک تایید صلاحیت است تا بررسی شود که آیا فرآیند تنظیم فایل release_agent دارای امتیازات مدیریتی است یا خیر. در نتیجه آن را برای اکسپلویت شدن آماده میکند.
به عبارت دیگر، اگر این فایل release_agent توسط یک مهاجم بازنویسی شود، میتوان هسته را مجبور به فراخوانی یک باینری دلخواه کرد که در releases agent با بالاترین مجوزهای ممکن پیکربندی شده است – سناریویی که میتواند به طور موثر امکان تصاحب کامل یک ماشین را فراهم کند.
با این حال، شایان ذکر است که فقط پردازشهای دارای امتیازات “root” میتوانند در فایل بنویسند. به این معنی که این آسیبپذیری تنها به پردازشهای root اجازه میدهد تا سطح دسترسی را افزایش دهند.
Avrahami توضیح داد: «در نگاه اول، یک آسیبپذیری افزایش سطح دسترسی که فقط توسط کاربر root قابل اکسپلویت است، ممکن است عجیب به نظر برسد. اجرای با عنوان کاربر root لزوماً به معنای کنترل کامل بر دستگاه نیست: یک ناحیه خاکستری بین کاربر root و دسترسی کامل وجود دارد که شامل قابلیتها، فضاهای نام و کانتینرها میشود. در این سناریوها که فرآیند root کنترل کاملی بر روی دستگاه ندارد، CVE-2022-0492به یک آسیبپذیری جدی تبدیل میگردد».
اگرچه کانتینرهایی که با AppArmor یا SELinux اجرا میشوند از این نقص محافظت میشوند، به کاربران توصیه میشود با توجه به این که ممکن است توسط سایر فرآیندهای میزبان مخرب برای افزایش سطح دسترسی مورد سوء استفاده قرار گیرند، وصلهها را اعمال کنند.
زمان زیادی از اولین باری که release_agent به عنوان یک بردار حمله ظاهر میشود، گذشته است. در جولای ۲۰۱۹، محقق Google Project Zero، فلیکس ویلهلم، یک اکسپلویت “quick and dirty” از اکسپلویت اثبات مفهوم (PoC) با استفاده از این ویژگی برای بیرون آمدن از کانتینرهای سطح بالا Kubernetes و Docker را نشان داد.
در نوامبر ۲۰۲۱، شرکت امنیت مجازی بومی Aqua جزئیات یک کمپین استخراج ارز دیجیتال را فاش کرد که دقیقاً از همان تکنیک فرار از کانتینر برای رها کردن ماینر کوین XMRig بر روی میزبانهای آلوده استفاده میکرد و آن را به اولین نمونه ثبتشده از بهرهبرداری در دنیای واقعی تبدیل نمود.
Avrahami در پایان گفت: «CVE-2022-0492 یک آسیبپذیری دیگر لینوکس را نشان میدهد که میتوان از آن برای فرار از کانتینر سوء استفاده کرد. خوشبختانه، محیطهایی که بهترین شیوهها را دنبال میکنند از این آسیبپذیری محافظت میشوند. محیطهایی با کنترلهای امنیتی ضعیف که میزبان کانتینرهای غیرقابل اعتماد یا در معرض عموم هستند، بدون تعجب، در معرض خطر بالایی میباشند.»
اخبار آسیبپذیریها را از سایت آپا داشگاه تبریز، بخش آسیبپذیریها دنبال کنید.
نظرات کاربران