یک حملهی جدید به هستهی لینوکس با نام SLUBStick با موفقیت ۹۹ درصد توانسته است یک آسیبپذیری محدود در حافظه heap را به قابلیت خواندن و نوشتن دلخواه در حافظه تبدیل کند. این امر به محققان اجازه میدهد تا سطح دسترسی خود را افزایش دهند یا از محیطهای محدود (containers) عبور کنند.
کشف این حمله توسط تیمی از محققان دانشگاه فناوری Graz صورت گرفته است. آنها این حمله را روی نسخههای ۵٫۹ و ۶٫۲ (جدیدترین نسخه) هستهی لینوکس با استفاده از نه آسیبپذیری موجود (CVE) در سیستمهای ۳۲ بیتی و ۶۴ بیتی نمایش دادند، که نشاندهندهی قابلیت تطبیقپذیری بالای این حمله است.
حتی با فعال بودن مکانیزمهای امنیتی مدرن در هستهی لینوکس مانند Supervisor Mode Execution Prevention (SMEP) ، Supervisor Mode Access Prevention (SMAP) و Kernel Address Space Layout Randomization (KASLR) ، حمله همچنان موفق بوده است و توانسته از این مکانیزمهای دفاعی عبور کند. این نشاندهندهی قدرت و پیچیدگی بالای این حمله است.
حملهی SLUBStick به صورت کامل و با جزئیات در کنفرانس Usenix Security Symposium که در پایان این ماه برگزار میشود، ارائه خواهد شد. محققان نشان خواهند داد که چگونه میتوان با استفاده از این حمله، سطح دسترسی را افزایش داد و از کانتینرها فرار کرد، حتی زمانی که پیشرفتهترین مکانیزمهای دفاعی در نسخهی جدید لینوکس فعال باشند.
در این فاصله (تا زمان برگزاری کنفرانس)، مقالهی فنی منتشر شده حاوی تمام جزئیات مربوط به حمله و سناریوهای احتمالی بهرهبرداری از آن است.
جزئیات SLUBStick
هستهی لینوکس از یک روش خاص به نام “slabs” برای مدیریت حافظه استفاده میکند که در آن تکههای حافظه به انواع مختلف ساختارهای داده تخصیص داده میشوند و پس از استفاده آزاد میشوند تا حافظه به صورت بهینه و امن مدیریت شود.
نقصهایی در این فرآیند مدیریت حافظه ممکن است به مهاجمان اجازه دهد تا ساختارهای داده را خراب یا دستکاری کنند که به این نوع حملات “حملات بین کشی” (cross-cache attacks) گفته میشود. با این حال، این حملات حدود ۴۰ درصد مواقع مؤثر هستند و معمولاً دیر یا زود منجر به خرابی سیستم میشوند.
SLUBStick از یک آسیبپذیری در heap( حافظه پویا ) مانند دوبار آزادسازی، استفاده پس از آزادسازی، یا نوشتن خارج از محدوده، برای دستکاری فرآیند تخصیص حافظه بهرهبرداری میکند.
حمله با استفاده از اطلاعات زمانی دقیق دربارهی تخصیص و آزادسازی حافظه، به مهاجم امکان میدهد تا با پیشبینی و کنترل چگونگی استفاده مجدد از حافظه، به اهداف خود دست یابد.
با استفاده از اطلاعات زمانی دقیق، موفقیت حملات SLUBStick به میزان بسیار بالایی افزایش مییابد و این باعث میشود که این نوع حمله در عمل بسیار مؤثر و کاربردی باشد.
تبدیل آسیبپذیری در حافظهی heap به یک قابلیت خواندن و نوشتن دلخواه در حافظه، در سه مرحله انجام میشود:
- تکههای خاصی از حافظه را آزاد کنید و منتظر بمانید تا هستهی سیستمعامل دوباره از آنها استفاده کند.
- تکههای حافظه را به طور کنترلشده دوباره تخصیص دهید و اطمینان حاصل کنید که این تکهها برای ساختارهای دادهی حیاتی مانند جداول صفحات (page tables) مجدداً مورد استفاده قرار گیرند.
- پس از بازپسگیری (تخصیص مجدد) تکههای حافظه، مهاجم ورودیهای جدول صفحات را بازنویسی میکند و بدین ترتیب قادر میشود هر مکان حافظهای را بخواند و بنویسد.
تأثیر در دنیای واقعی
برای اجرای حملهی SLUBStick، به دو پیشنیاز نیاز است: اول، دسترسی محلی با قابلیت اجرای کد به دستگاه هدف و دوم، وجود یک آسیبپذیری در حافظهی heap هستهی لینوکس که این آسیبپذیری برای به دست آوردن دسترسی به حافظه مورد استفاده قرار میگیرد.
اگرچه حمله ممکن است به دلیل برخی ویژگیها یا محدودیتها در ابتدا به نظر عملی نباشد، اما هنوز مزایایی برای مهاجمان دارد که میتواند به نفع آنها باشد.
SLUBStick ابزار قدرتمندی است که به مهاجمان با قابلیت اجرای کد این امکان را میدهد که به طیف گستردهای از اهداف امنیتی برسند و آنها را به صورت ترکیبی در حملات پیچیدهتر استفاده کنند.
افزایش سطح دسترسی میتواند برای ارتقاء سطح دسترسی به ریشه (root) استفاده شود که اجازه انجام عملیات نامحدود را میدهد، در حالی که فرار از کانتینر(scape) میتواند برای شکستن محیطهای ایزوله (sandboxed environments) و دسترسی به سیستم میزبان (host system) مورد استفاده قرار گیرد.
در مرحلهای بعد از بهرهبرداری از آسیبپذیری، SLUBStick میتواند تغییرات در ساختارهای هسته یا درگاههای آن ایجاد کند تا بدافزار در سیستم باقی بماند و شناسایی آن برای مدافعان مشکلتر شود.
افرادی که به مطالعه و آزمایش بیشتر دربارهی SLUBStick علاقه دارند میتوانند به مخزن گیتهاب محققان دانشگاه Graz مراجعه کنند تا به ابزارها و بهرهبرداریهای مربوط به تحقیق دسترسی پیدا کنند.