در ۹ آگوست ۲۰۲۵، پژوهشگر Jann Horn از تیم Google Project Zero یک آسیبپذیری امنیتی جدی در هسته لینوکس را افشا کرد که به مهاجمان اجازه میدهد از طریق اجرای کد بومی در سندباکس رندرر مرورگر Chrome به کنترل کامل سطح کرنل دست پیدا کنند.
این نقص که به قابلیت کمتر شناختهشده MSG_OOB در سوکتهای دامنه UNIX مربوط است، بر هستههای لینوکس نسخه ۶.۹ به بالا تأثیر گذاشته و باعث نگرانی در مورد امنیت سندباکسهای مرورگر و ریسک ویژگیهای خاص و کمتر استفادهشده کرنل شده است.
منشاء باگ MSG_OOB و نحوه اکسپلویت
-
MSG_OOB (پیام Out-of-Band) در لینوکس ۵.۱۵ (۲۰۲۱) معرفی شد و عمدتاً در برنامههای خاص اوراکل استفاده میشود.
-
به صورت پیشفرض در کرنلهایی که از UNIX domain sockets پشتیبانی میکنند فعال بوده و در سندباکس رندرر کروم نیز بدون فیلتر شدن فلگهای syscall در دسترس بوده است.
-
باگ باعث use-after-free (UAF) میشود که Horn نشان داد با یک دنباله ساده از عملیات سوکت میتوان آن را به دستکاری حافظه کرنل و ارتقاء سطح دسترسی تبدیل کرد.
زنجیره حمله
-
ایجاد شرایط UAF برای یک اشارهگر داخلی سوکت.
-
استفاده از read primitive ناشی از UAF برای کپی حافظه دلخواه کرنل به فضای کاربر و دور زدن مکانیزم usercopy hardening.
-
تخصیص مجدد حافظه آزادشده به عنوان صفحات pipe یا پشتههای کرنل، با کمک تکنیکهایی مانند manipulation جدول صفحات و استفاده از
mprotect()
. -
بهرهگیری از ویژگی امنیتی Debian به نام CONFIG_RANDOMIZE_KSTACK_OFFSET (تصادفیسازی موقعیت پشته) برای کشف چینش مناسب پشته و ایجاد فساد حافظه دقیق.
پچ و اقدامات امنیتی
-
هسته لینوکس با انتشار وصله، باگ MSG_OOB را برطرف کرده است.
-
Chrome نیز سندباکس خود را بهروزرسانی کرده تا پیامهای MSG_OOB مسدود شوند.
نقاط ضعف سندباکس و محدودیت فازرها
-
باگ اولیه در آگوست ۲۰۲۴ توسط ابزار fuzzing گوگل (syzkaller) کشف شد، اما نیازمند ۶ syscall متوالی برای فعالسازی بود؛ در حالیکه باگ پیچیدهتر Horn به ۸ syscall نیاز داشت.
-
این موضوع نشان میدهد که فازرها در شناسایی مسیرهای پیچیده در ساختارهای داده کرنل (مثل socket bufferها) با چالش جدی روبهرو هستند.
-
Horn پیشنهاد کرده فازرها روی زیرسیستمهای خاص کرنل متمرکز شوند تا احتمال کشف چنین باگهایی بالاتر برود.
ریسک ناشی از سطح حمله وسیع سندباکس کروم
سندباکس رندرر لینوکس در کروم دسترسیهایی مانند:
-
UNIX sockets
-
pipes
-
برخی syscalls (مثل
sendmsg()
وmprotect()
)
را باز میگذارد که برای عملکرد رندرر ضروری نیستند، اما سطح حمله را بهطور غیرضروری افزایش میدهند.
نمونههای قبلی شامل آسیبپذیری در futex()
، memfd_create()
و pipe2()
نشان دادهاند که ویژگیهای کمتر استفادهشده کرنل میتوانند باعث نفوذ شوند.
توصیهها
-
کاربران لینوکس باید فوراً آخرین پچهای کرنل را نصب کنند.
-
توسعهدهندگان مرورگر باید بازبینی کنند که چه قابلیتهای کرنل برای پردازشهای سندباکسشده در دسترس است و دسترسی به ویژگیهای خاص و غیرضروری را محدود کنند.
-
بازنگری در معماری sandbox و کاهش سطح حمله برای جلوگیری از سوءاستفاده از قابلیتهای خاص کرنل ضروری است.
یک نظر