آسیب پذیری در زیرسیستم هسته لینوکس Netfilter

یک آسیب‌پذیری (CVE-2021-22555) در Netfilter، زیرسیستم هسته لینوکس که برای فیلتر کردن و اصلاح بسته‌های شبکه استفاده می‌شود، شناسایی شده است که به کاربر محلی اجازه می‌دهد تا از امتیازات ریشه در سیستم، از جمله زمانی که در یک کانتینر مجزا است، به دست آورد. یک نمونه اولیه از یک اکسپلویت که مکانیسم‌های حفاظتی KASLR، SMAP و SMEP را دور می‌زند برای آزمایش آماده شده است. محققی که این آسیب‌پذیری را کشف کرد، برای شناسایی روشی برای دور زدن جداسازی ظروف Kubernetes در یک خوشه kCTF، جایزه 20 دلاری از گوگل دریافت کرد.

این مشکل از زمان هسته 2.6.19 که 15 سال پیش منتشر شد وجود داشت و ناشی از یک اشکال در کنترل کننده های IPT_SO_SET_REPLACE و IP6T_SO_SET_REPLACE است که باعث سرریز بافر هنگام ارسال پارامترهای فرمت شده خاص از طریق تماس setsockopt در حالت compat می شود. در شرایط عادی، فقط کاربر ریشه می‌تواند با compat_setsockopt() تماس بگیرد، اما امتیازات مورد نیاز برای انجام حمله نیز می‌تواند توسط یک کاربر غیرمجاز در سیستم‌هایی با پشتیبانی از فضای نام کاربری فعال شده به دست آید.

یک کاربر می تواند یک کانتینر با یک کاربر ریشه جداگانه ایجاد کند و از آنجا از آسیب پذیری سوء استفاده کند. به عنوان مثال، "user namespaces" به طور پیش فرض در Ubuntu و Fedora فعال است، اما در Debian و RHEL فعال نیست. وصله رفع آسیب پذیری در 13 آوریل در هسته لینوکس پذیرفته شد. به‌روزرسانی‌های بسته قبلاً توسط پروژه‌های Debian، Arch Linux و Fedora ایجاد شده‌اند. در اوبونتو، RHEL و SUSE، به روز رسانی ها در حال آماده سازی هستند.

این مشکل در تابع xt_compat_target_from_user () به دلیل محاسبه نادرست اندازه حافظه هنگام ذخیره ساختارهای هسته پس از تبدیل از نمایش 32 بیتی به 64 بیتی رخ می دهد. اشکال اجازه می دهد تا چهار بایت تهی در هر موقعیتی فراتر از بافر اختصاص داده شده با افست 0x4C نوشته شود. معلوم شد که این ویژگی برای ایجاد یک اکسپلویت کافی است که به شخص اجازه می‌دهد تا حقوق ریشه را به دست آورد - با پاک کردن نشانگر m_list->next در ساختار msg_msg، شرایطی برای دسترسی به داده‌ها پس از آزاد کردن حافظه (استفاده پس از آزاد) ایجاد شد. سپس برای به دست آوردن اطلاعات در مورد آدرس ها و تغییرات در ساختارهای دیگر از طریق دستکاری فراخوانی سیستم ()msgsnd استفاده شد.

منبع: opennet.ru

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