Januscape؛ یه باگ ۱۶ساله KVM که فرار از VM رو ممکن میکنه
خلاصهٔ کاملتر
پژوهشگر امنیتی هیونوو کیم جزئیات یه آسیبپذیری از نوع use-after-free در هایپروایزر KVM لینوکس رو منتشر کرده که اجازه میده کدِ در حال اجرا داخل یه ماشین مجازی مهمان (guest)، حافظه هسته میزبان (host) رو خراب کنه. این باگ با شناسه CVE-2026-53359 و نام Januscape ردیابی میشه و از آگوست ۲۰۱۰ توی هسته لینوکس نشسته بوده. نکته مهم اینه که هم روی پردازندههای اینتل و هم AMD کار میکنه؛ یعنی اولین فرار مستند و عمومیِ مهمانبهمیزبان KVM هست که روی هر دو معماری جواب میده.
ریشه مشکل توی بخش shadow MMU از KVM/x86 هست. KVM برای ردیابی چیدمان حافظه مهمان، مجموعهای از جدولهای صفحه داخلی نگه میداره و وقتی به یکی از این صفحات ردیابی نیاز داره، دنبال یکی موجود میگرده تا دوباره استفاده کنه. اشتباه اینجاست که کاندیدا رو فقط بر اساس آدرس حافظه تطبیق میداده و نوع صفحه ردیابی رو نادیده میگرفته. همین باعث میشه KVM درباره اینکه کدوم صفحه رو مدیریت میکنه گیج بشه و رکوردهای داخلیش نادرست بشن.
بیشتر وقتها هسته این خرابی رو تشخیص میده و بلافاصله خودش رو خاموش میکنه تا جلوی آسیب بیشتر رو بگیره؛ همون کرشی که اثبات مفهوم (PoC) عمومی ایجاد میکنه و باعث میشه هسته میزبان panic کنه و هر ماشین مجازیِ دیگه روی همون سرور فیزیکی هم با خودش پایین بیاد. حالت خطرناکتر وقتیه که صفحه آزادشده قبل از پاکسازی برای مصرف دیگهای تخصیص داده بشه؛ اونوقت عملیات پاکسازی روی حافظهای مینویسه که دیگه مالکش نیست. مهاجم کنترل داره که این نوشتن کجا فرود بیاد (نه اینکه چی نوشته بشه)، و همین اولیهٔ محدود برای رسیدن به اجرای کامل کد روی میزبان کافیه.
طبق گفته نویسنده، این حمله به دسترسی root داخل ماشین مجازی مهمان و فعالبودن مجازیسازی تودرتو (nested virtualization) روی میزبان نیاز داره. دسترسی root داخل مهمان یه شرط استاندارده — وقتی یه VM اجاره میکنی، روی همون نمونه خودت root داری. شرط مجازیسازی تودرتو از نظر معماری مهمه، چون حتی میزبانهایی که بهطور پیشفرض از مدیریت حافظه سختافزاری استفاده میکنن، وقتی مجازیسازی تودرتو فعال باشه مجبورن به مسیر قدیمیتر shadow MMU برگردن؛ دقیقاً همونجایی که باگ زندگی میکنه.
کیم میگه چون Januscape توی KVM داخل هسته رخ میده و مستقل از شبیهسازی QEMU فعال میشه، حتی ابرهای بزرگی که پشته مجازیسازی اختصاصی خودشون رو دارن هم میتونن در خطر باشن. اون این باگ رو بهعنوان یه صفرروزه توی برنامه kvmCTF گوگل — که تا ۲۵۰ هزار دلار برای فرارهای کامل مهمانبهمیزبان جایزه میده — ثبت کرده. یه اکسپلویت کامل که روی میزبان به اجرای کد میرسه هم وجود داره ولی منتشر نشده.
اصلاح، یه افزودنِ یکخطی به تابع kvm_mmu_get_child_sp() هست؛ حالا شرط استفاده مجدد هم شماره فریم مهمان و هم نوع نقش (role) رو با هم چک میکنه. نسخههای پایدار هسته در ۴ جولای ۲۰۲۶ منتشر شدن: 7.1.3، 6.18.38، 6.12.95، 6.6.144، 6.1.177، 5.15.211 و 5.10.260. اگه میزبان x86 با KVM داری که مهمانهای چندمستأجری با مجازیسازی تودرتو میپذیره، مطمئن شو کامیت 81ccda30b4e8 توی هسته در حال اجراته. اگه فعلاً نمیتونی وصله بزنی، غیرفعالکردن مجازیسازی تودرتو با kvm_intel.nested=0 یا kvm_amd.nested=0 مسیر حمله رو برای مهمانهای نامعتمد میبنده.
نکات کلیدی:
- Januscape (CVE-2026-53359) یه باگ use-after-free در shadow MMU از KVM/x86 هست
- فرار مهمانبهمیزبان روی هم اینتل و هم AMD؛ خطر جدی برای ابرهای چندمستأجری
- به root داخل مهمان و فعالبودن مجازیسازی تودرتو نیاز داره
- اصلاح: یه تغییر یکخطی در kvm_mmu_get_child_sp()، کامیت 81ccda30b4e8
- کاهش موقت خطر: غیرفعالکردن nested virtualization با kvm_intel.nested=0 یا kvm_amd.nested=0




