GhostLock؛ باگ ۱۵ سالهٔ کرنل لینوکس که دسترسی روت میده
خلاصهٔ کاملتر
یه تیم امنیتی به اسم Nebula Security یه آسیبپذیری خیلی قدیمی تو هستهٔ لینوکس رو کشف کرده که اسمش رو گذاشتن GhostLock و کد CVE-2026-43499 بهش اختصاص داده شده. این باگ از نسخهٔ کرنل ۲٫۶٫۳۹ (سال ۲۰۱۱) وجود داشته، یعنی حدود ۱۵ ساله، ولی تا همین اواخر کشف نشده بود و بالاخره فروردین ۲۰۲۶ پچ شده.
ریشهٔ این آسیبپذیری یه باگ use-after-free تو زیرسیستم rtmutex هستهست، همون بخشی که مسئول قفلهای real-time mutex ـه. مشکل تو تابع remove_waiter() تو فایل kernel/locking/rtmutex.c ـه: تو بعضی حالتهای خاص عملیات priority inheritance (PI) روی futexها، هسته اشتباهی فیلدی که نشون میده هر task منتظر کدوم قفله رو برای task غلط پاک میکنه.
این اشتباه باعث میشه یه اشارهگر معلق (dangling pointer) به یه ساختار rt_mutex_waiter که رو استک نگه داشته میشه، ایجاد بشه. برای سوءاستفاده از این حفره، مهاجم باید با سه ترد و سه متغیر futex (از جمله عملیات FUTEX_CMP_REQUEUE_PI) یه چرخهٔ وابستگی بسازه که هسته رو مجبور میکنه وارد مسیر برگشت -EDEADLK بشه؛ همین جاست که pointer معلق شکل میگیره و مهاجم میتونه با فراخوانی سیستمی prctl(PR_SET_MM_MAP) اون فضای آزادشدهٔ استک رو دوباره تصاحب کنه و دادههای دلخواه توش بنویسه.
محققان میگن این مکانیزم رو میشه به یه ابزار نوشتن کنترلشده تو حافظهٔ هسته تبدیل کرد، تا جایی که حتی ساختارهای داخلی هسته مثل درختهای red-black تو صف انتظار mutexها هم قابل تغییر میشن. زنجیرهٔ کامل اکسپلویت شامل دور زدن KASLR با حملات زمانسنجی prefetch، استفاده از ناحیههای حافظهٔ CPU Entry Area برای پیشبینی محل حافظهٔ هسته، و دستکاری جدول اشارهگرهای تابع مثل inet6_protos برای هدایت اجرای کد ـه.
مرحلهٔ آخر اکسپلویت هم یه تکنیک به اسم DirtyMode ـه: با یه نوشتن سادهٔ هسته، بیتهای دسترسی مسیرهای حساسی مثل /proc/sys/kernel/core_pattern تغییر میکنه و همین اجرای باینری دلخواه با سطح روت رو ممکن میکنه. طبق گزارشها این زنجیرهٔ اکسپلویت نرخ موفقیت ۹۷٪ داشته و تو محیط kernelCTF گوگل هم آزمایش شده و جایزهٔ بیش از ۹۲ هزار دلاری گرفته.
این آسیبپذیری همهٔ نسخههای هستهٔ لینوکس از ۲٫۶٫۳۹ تا ۷٫۱ رو، مگر پچشده باشن، تحت تاثیر قرار میده. نکتهٔ مهم اینه که برای سوءاستفاده نیازی به دسترسی بالا یا namespace خاصی نیست، همین باعث میشه سطح حمله خیلی گسترده باشه. محیطهای کانتینری هم بهطور خاص در خطرن، چون این باگ اجازهٔ فرار از ایزولهسازی کانتینر و رسیدن به سیستم میزبان رو میده.
وصلهای که منتشر شده باعث میشه ساختار درست task یعنی waiter->task بهجای thread در حال اجرا آپدیت بشه و منطق معیوب اصلاح بشه. بهعنوان لایههای دفاعی اضافه هم پیشنهاد شده RANDOMIZE_KSTACK_OFFSET فعال بشه تا استفادهٔ مجدد از استک قابل پیشبینی نباشه، و STATIC_USERMODE_HELPER هم دسترسی helperهای user-mode رو محدود کنه؛ ولی اینها فقط اقدامات مکملان و جای پچ اصلی رو نمیگیرن. تیمهای امنیتی بهشدت توصیه شدن هرچه زودتر آپدیت کنن.
نکات کلیدی:
- GhostLock (CVE-2026-43499) یه باگ ۱۵ سالهٔ کرنل لینوکسه که فروردین ۲۰۲۶ پچ شده.
- ریشهش یه use-after-free تو تابع remove_waiter() زیرسیستم rtmutex ـه.
- زنجیرهٔ اکسپلویت با ترکیب دور زدن KASLR و تکنیک DirtyMode به اجرای کد با سطح روت میرسه.
- تقریباً همهٔ توزیعهای لینوکس و محیطهای کانتینری رو تحت تاثیر قرار میده؛ آپدیت فوری توصیه میشه.




