کشف Zapscape؛ مسیر فرار از یک مهمان L1 به میزبان لینوکسی

Zapscape (CVE-2026-64561) یک نقص در پیاده‌سازی KVM/x86 است که به مهاجمی با امتیازات کرنل در یک ماشین مجازی مهمان سطح L1 امکان اجرای کد روی میزبان را می‌دهد. این خطر در محیط‌هایی که مجازی‌سازی تو‌در‌تو (nested virtualization) به مهمان‌های غیرقابل‌اعتماد ارائه می‌شود، ملموس‌تر است.

مکانیزم آسیب‌پذیری

نقص در لایهٔ مدیریت حافظهٔ سایه‌ای (shadow-MMU) رخ می‌دهد؛ بخشی که جدول‌های صفحهٔ سایه‌ای را برای ترجمهٔ حافظهٔ مهمان‌های تو‌در‌تو مدیریت می‌کند. خطای اصلی نوعی ترتیب‌بندی اشتباه (stale-root) است که می‌تواند منجر به use-after-free شود. هنگام هندلینگ خطای صفحه‌ای ایجادشده توسط مهمان، KVM ممکن است صفحات MMU را reclaim کند و ریشهٔ shadow-MMU را نامعتبر سازد در حالی که مسیر هندلینگ هنوز از آن استفاده می‌کند. به‌دلیل نبود بررسی مجدد ریشه، پردازش زیر یک ریشهٔ نامعتبر ادامه می‌یابد و ساختارهای فرزند با وضعیت نامعتبر ساخته می‌شوند. مرحلهٔ پاک‌سازی می‌تواند لینک‌های آویزان و نوشتن پس از آزادسازی ایجاد کند که مهاجم می‌تواند از آن برای اجرای کد روی میزبان بهره ببرد.

نمایی از کد یا نمودار مرتبط با آسیب‌پذیری Zapscape در KVM

اثبات مفهوم و محدودیت‌ها

پژوهشگر Hyunwoo Kim یک اثبات‌مفهوم عمومی منتشر کرد که با سوءاستفاده از این ضعف فایلی به نام /Zapscape روی میزبان ایجاد می‌کند. PoC هدف‌گیری‌اش را روی پیکربندی SVM/NPT تو‌در‌تو در معماری AMD و هستهٔ لینوکس نسخهٔ 7.1.3 قرار داده و توصیه شده برای آزمایش ایمن از QEMU TCG استفاده شود. QEMU خود آسیب‌پذیر نیست؛ باگ در ماژول KVM داخل هسته قرار دارد.

Kim تأکید کرده که این PoC یک اکسپلویت آماده برای سواستفاده در محیط‌های ابری نیست؛ بهره‌برداری عملی نیازمند تبدیل کد به ماژول کرنل داخل مهمان و تطبیق اکسپلویت با پیکربندی کرنل میزبان و جزئیات بک‌اند حافظه است.

نسخه‌های آسیب‌پذیر و وضعیت وصله‌ها

  • پایگاه دادهٔ ملی آسیب‌پذیری‌ها (NVD) نسخه‌های هستهٔ لینوکس 5.9 و بالاتر را تا زمان انتشار وصله‌های پایدار آسیب‌پذیر فهرست کرده است. (جزئیات: NVD CVE-2026-64561).
  • نسخه‌های پایدار حاوی اصلاح شامل 6.6.148، 6.12.101، 6.18.42، 7.1.6 و 7.2-rc5 اعلام شده‌اند.
  • وضعیت بسته‌ها بستگی به توزیع دارد؛ برخی توزیع‌ها اصلاح‌ها را به‌صورت backport عرضه می‌کنند بدون اینکه نسخهٔ هستهٔ بالادستی تغییر کند. Red Hat به این نکته اشاره کرده و امتیاز پایهٔ CVSS را 7.0 گزارش داده است.
  • وضعیت بسته‌ها برای توزیع دبیان در Debian Security Tracker گزارش شده است.

پچ و نحوهٔ اصلاح

رفع اصلی به‌صورت commit 2abd5287f083 ادغام شده است. این پچ بررسیِ وضعیت ریشه را پس از فراخوانی make_mmu_pages_available() منتقل می‌کند. در صورتی که reclaim ریشهٔ جاری را نامعتبر سازد، KVM اکنون مسیر هندلینگ خطا را با RET_PF_RETRY مجدداً اجرا می‌کند تا از ادامهٔ کار تحت یک ریشهٔ نامعتبر جلوگیری شود. جزئیات پچ در مخزن هسته در kernel.org قابل مشاهده است.

توصیه‌های فوری برای مدیران و تیم‌های ابری

  • در صورت ارائهٔ مجازی‌سازی تو‌در‌تو به مهمان‌های غیرقابل‌اعتماد، فوراً هستهٔ پایدار اصلاح‌شده یا بستهٔ رسمی توزیع را نصب کنید.
  • اگر نیاز به کاهش سریع ریسک وجود دارد: قابلیت nested virtualization را برای مهمان‌های غیرقابل‌اعتماد غیرفعال کنید یا دسترسی به سطح L1 با امتیازات کرنل را محدود نمایید.
  • برای سخت‌افزار اینتل، بررسی کنید که پیگرد صفحهٔ EPT (EPT page walk length) چه مقادیری به مهمان L1 معرفی شده است؛ در برخی پیکربندی‌ها هر دو مقدار 4 و 5 در معرض گذاشتن مهمان قرار می‌گیرند. در معماری AMD شرط معادل مطرح نیست. تنظیمات CPU و exposed capabilities را ارزیابی کنید.
  • پچ‌ها و یادداشت‌های امنیتی توزیع خود و اطلاعیه‌های توزیع‌کنندگان مهم را دنبال کنید و وضعیت بسته‌ها را از طریق ردیاب رسمی توزیع بررسی نمایید؛ اصلاح ممکن است به‌صورت backport منتشر شده باشد.

تاریخچهٔ افشای نقص

  • گزارش اولیه توسط Kim به آدرس security@kernel.org در 11 ژوئیهٔ 2026 ارسال شد.
  • پچ در 21 ژوئیه ادغام شد و مسئله در یک تحریم پنج‌روزه روی لیست linux-distros قرار گرفت.
  • CVE-2026-64561 در 4 اوت تخصیص یافت و افشای عمومی در 6 اوت انجام شد.

نتیجه‌گیری فنی و درس‌های عملی

Zapscape نمونه‌ای از آسیب‌پذیری‌های ظریف ناشی از ترتیب‌بندی نادرست در زیرساخت‌های مجازی‌سازی است؛ کنترل دقیق‌تر روی نقاط بازگشتی و بررسی وضعیت ریشهٔ ساختارهای داده‌ای از ایجاد چنین مشکلاتی جلوگیری می‌کند. برای مدیران و مهندسان امنیتی، اقدامات اولویت‌دار شامل ارزیابی سطح قرارگیری امکانات مثل nested virtualization و به‌روزرسانی سریع هسته و بسته‌های توزیع است.

منابع پیشنهادی: صفحهٔ NVD برای CVE-2026-64561، ردیاب امنیتی دبیان، اطلاعیه‌های توزیع‌کنندگان و مخزن هسته در kernel.org را برای بررسی وضعیت بسته‌ها و راهنمای رفع مطالعه کنید. برای اجرای ایمن PoC می‌توان از QEMU TCG استفاده کرد.