آسیب‌پذیری Zapscape در KVM امکان اجرای کد روی میزبان لینوکس را برای مهاجم دارای دسترسی کرنل فراهم می‌کند

اشتراک گذاری

آسیب‌پذیری Zapscape
❞ آسیب‌پذیری Zapscape با شناسه CVE-2026-64561 در کرنل لینوکس شناسایی شده است که می‌تواند ایزولیشن (Isolation) ماشین‌های مجازی KVM را دور بزند و به مهاجم با سطح دسترسی کرنل در یک ماشین مجازی L1 اجازه دهد کد و دستورات دلخواه خود را روی میزبان اجرا کند

آسیب‌پذیری Zapscape با شناسه CVE-2026-64561 در کرنل لینوکس شناسایی شده است که می‌تواند ایزولیشن (Isolation) ماشین‌های مجازی KVM را دور بزند و به مهاجم با سطح دسترسی کرنل در یک ماشین مجازی L1 اجازه دهد کد و دستورات دلخواه خود را روی میزبان اجرا کند. آسیب‌پذیری Zapscape، Shadow MMU در KVM/x86 را تحت تأثیر قرار می‌دهد و زمانی ریسک بیشتری ایجاد می‌کند که قابلیت مجازی‌سازی تو‌در‌تو (Nested Virtualization) برای ماشین‌های مهمان غیرقابل اعتماد (Untrusted Guests) فعال باشد.

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

این آسیب‌پذیری توسط یک پژوهشگر امنیتی با نام  Hyunwoo Kim  افشا شده است. به گفته او، مسیر اکسپلویت اثبات‌شده می‌تواند به مهاجم اجازه دهد دستورات دلخواه خود را روی میزبان با سطح دسترسی کرنل یا Root اجرا کند. در این سناریو، آسیب‌پذیری Zapscape در صورت فراهم بودن شرایط لازم، امکان فرار (Escape)مهاجم از ایزولیشن ماشین مجازی L1 و دسترسی به میزبان را فراهم می‌کند و سطح دسترسی او را از ماشین مهمان به میزبان KVM گسترش می‌دهد.

اصلاحیه این ضعف امنیتی در شاخه اصلی KVM ادغام شده است. مدیرانی که روی میزبان‌های KVM خود، قابلیت مجازی‌سازی تو‌در‌تو را برای ماشین‌های مهمان غیرقابل اعتماد فعال کرده‌اند، باید کرنل را به یک نسخه پایدار و پچ‌شده  ارتقا دهند یا از پکیجی استفاده کنند که ارائه‌دهنده، پچ  این ضعف را در آن بک‌پورت (Backport) کرده باشد.

شرایط لازم برای سوءاستفاده در سیستم‌های Intel و AMD

سوءاستفاده از آسیب‌پذیری Zapscape مستلزم دسترسی در سطح کرنل در ماشین مجازی L1 است که در عمل معمولاً به معنای داشتن دسترسی Root در ماشین مهمان خواهد بود.

در سیستم‌های مبتنی بر Intel، هر دو حالت طول پیمایش صفحات EPT، یعنی 4 و 5 (EPT Page-Walk Length)، باید برای ماشین مجازی L1 فعال باشند. در سیستم‌های AMD، چنین محدودیت یا شرط مشابهی وجود ندارد.

ضعف در بررسی Root و ایجاد وضعیت استفاده پس از آزادسازی

آسیب‌پذیری Zapscape ناشی از ضعف در ترتیب بررسی Root منسوخ یا نامعتبر (Stale Root) در سازوکار مدیریت Shadow MMU در KVM است و می‌تواند منجر به وضعیت استفاده پس از آزادسازی (Use-After-Free) شود.

هنگام رسیدگی KVM به خطای صفحه (Page Fault) در ماشین مهمان، ممکن است برخی صفحات MMU برای استفاده مجدد آزاد شوند. در همین فرآیند، صفحه Root مربوط به Shadow MMU که هنوز در مسیر پردازش خطا مورد استفاده قرار دارد، ممکن است نامعتبر شود.

مشکل اینجاست که پس از این عملیات، مسیر رسیدگی به خطای صفحه دوباره وضعیت Root را بررسی نمی‌کند. بنابراین KVM می‌تواند پردازش را با همان Root نامعتبر ادامه دهد.

مسیر Recursive Zap و ایجاد صفحات Shadow نامعتبر

Kim در گزارش فنی خود، منشأ این ضعف را یک وضعیت استفاده پس از آزادسازی در مسیر Recursive Zap می‌داند؛ مسیری که KVM هنگام آزادسازی صفحات Shadow از آن استفاده می‌کند.

KVM ابتدا وضعیت Root فعلی را از نظر منسوخ شدن بررسی کرد. سپس با آزاد کردن صفحات MMU، فضای لازم برای ایجاد صفحات جدید را فراهم کرد. در همین فرآیند، Root مورد استفاده نامعتبر شد، اما KVM بدون بررسی مجدد آن، رسیدگی به خطای صفحه را ادامه داد و صفحات فرزند Shadow (Child Shadow Pages) را نیز زیر همان Root نامعتبر ایجاد کرد.

این صفحات فرزند نیز همان وضعیت نامعتبر Root والد را داشتند، اما همچنان در فهرست صفحات فعال MMU در KVM (Active MMU Page List) قرار گرفتند. در مرحله پاک‌سازی، ممکن بود یک لینک فهرست (List Link) به‌طور هم‌زمان در دو فهرست قرار بگیرد. در ادامه، صفحه آزاد ‌شد، در حالی که ارجاع‌های قبلی به آن همچنان باقی ‌ماندند. در نتیجه، این ارجاع‌های نامعتبر ‌توانستند زمینه را برای نوشتن روی حافظه پس از آزادسازی (Post-Free Write) فراهم کنند.

PoC عمومی و محدودیت‌های اکسپلویت عملی

کد اثبات مفهوم (PoC) عمومی منتشرشده توسط Kim از همین سازوکار برای ساخت یک زنجیره کامل اکسپلویت استفاده می‌کند. این زنجیره در نهایت می‌تواند فایلی با نام /Zapscape روی میزبان دارای KVM آسیب‌پذیر ایجاد کند که مالکیت آن در اختیار Root قرار دارد.

این PoC، مجازی‌سازی تو‌در‌توی SVM/NPT در پردازنده‌های AMD  را در لینوکس 7.1.3 هدف قرار می‌دهد. Kim برای آزمایش ایمن آن، اجرای PoC در محیط QEMU TCG را پیشنهاد کرده است. با این حال، QEMU کامپوننت آسیب‌پذیر نیست. به گفته Kim، ضعف در KVM داخل کرنل لینوکس قرار دارد و بدون وابستگی به سازوکار شبیه‌سازی  QEMU فعال می‌شود.

گزارش فنی Kim که در 6 آگوست 2026 منتشر شد، شامل PoC عمومی است، اما هیچ ادعایی درباره سوءاستفاده از این ضعف در حملات واقعی مطرح نمی‌کند. همچنین او تأکید کرده است که نمونه فعلی هنوز یک اکسپلویت آماده سوءاستفاده نیست و نمی‌توان آن را مستقیماً در محیط‌های ابری اجرا کرد.

برای اکسپلویت عملی، مهاجم باید عملیات موردنیاز در سطح L1 را به یک ماژول کرنل ماشین مهمان منتقل کند. علاوه بر این، اکسپلویت باید متناسب با پیکربندی کرنل میزبان و زیرساخت مدیریت حافظه مورد استفاده در سیستم هدف، تغییر داده شود.

در نتیجه، اگرچه آسیب‌پذیری Zapscape دارای PoC عمومی است، اما نسخه فعلی هنوز برای اجرای مستقیم در محیط‌های واقعی آماده نیست و مهاجم برای تبدیل آن به یک اکسپلویت عملی باید آن را با شرایط و پیکربندی میزبان هدف تطبیق دهد.

وضعیت نسخه‌ها، افشا و اصلاح آسیب‌پذیری Zapscape

بر اساس اطلاعات پایگاه ملی آسیب‌پذیری‌ها (NVD)، نسخه‌های لینوکس 5.9 و بالاتر تا پیش از انتشار نسخه‌های پایدار حاوی اصلاحیه، تحت تأثیر این آسیب‌پذیری قرار دارند. نسخه‌های اصلاح‌شده شامل موارد زیر هستند:

  • لینوکس 6.6.148
  • لینوکس 6.12.101
  • لینوکس 6.18.42
  • لینوکس 7.1.6
  • لینوکس 7.2-rc5

Red Hat در اطلاعیه امنیتی خود، شدت این ضعف را با امتیاز اولیه 7.0 در سیستم CVSS ارزیابی کرده و آن را در چارچوب CWE-825، مربوط به «ارجاع به اشاره‌گر منقضی‌شده» (Expired Pointer Dereference) طبقه‌بندی کرده است.

با این حال، شماره نسخه به‌تنهایی برای تشخیص وضعیت امنیتی پکیج‌های کرنل کافی نیست. ممکن است یک توزیع، اصلاحیه امنیتی را بدون تغییر شماره نسخه اصلی پکیج اعمال کرده باشد. بنابراین، برای بررسی وضعیت هر پکیج باید به ردیاب امنیتی (Security Tracker) همان توزیع مراجعه کرد.

Red Hat نیز هشدار داده است که این شرکت در بسیاری از موارد اصلاحیه‌های امنیتی را از نسخه‌های جدیدتر دریافت و روی پکیج‌های قدیمی‌تر اعمال می‌کند؛ فرآیندی که به آن بک‌پورت گفته می‌شود. در چنین شرایطی، ممکن است شماره نسخه پکیج تغییر نکند. بنابراین، صرفاً با مشاهده شماره نسخه نمی‌توان مشخص کرد که یک پکیج اصلاحیه امنیتی مربوط به این ضعف را دریافت کرده است یا خیر.

ردیاب امنیتی دبیان تا 6 آگوست 2026، شاخه‌های Bullseye، Bookworm، Trixie و Forky را آسیب‌پذیر اعلام کرده بود، در حالی که این ضعف در شاخه Sid از نسخه 7.1.6-1 برطرف شده بود. این وضعیت شامل پکیج‌های کرنل موجود در مخازن امنیتی دبیان نیز می‌شد.

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

اصلاح اصلی در KVM با کامیت شناسه 2abd5287f083 اعمال شد. در این اصلاح، بررسی منسوخ یا نامعتبر بودن Root به بعد از اجرای تابع make_mmu_pages_available() منتقل شده است. به این ترتیب، اگر آزادسازی صفحات MMU باعث نامعتبر شدن Root شود، KVM دیگر پردازش خطای صفحه را با همان Root ادامه نمی‌دهد و آن را با مقدار RET_PF_RETRY دوباره اجرا می‌کند.

این تغییر باعث می‌شود KVM پس از نامعتبر شدن Root، دیگر از آن برای مدیریت یا دسترسی به حافظه استفاده نکند و در نتیجه، مسیر ایجاد وضعیت استفاده پس از آزادسازی مسدود شود.

سابقه شناسایی آسیب‌پذیری‌های KVM توسط Kim

این آسیب‌پذیری در ادامه تحقیقات امنیتی پیشین Kim روی KVM شناسایی شده است. او پیش‌تر Januscape با شناسه CVE-2026-53359 را شناسایی کرده بود؛ یک آسیب‌پذیری مستقل در Shadow MMU مربوط به KVM/x86 که جزئیات آن در جولای منتشر شد. همچنین Kim در ژوئن، ITScape با شناسه CVE-2026-46316 را معرفی کرد؛ آسیب‌پذیری دیگری در KVM/arm64 که می‌توانست منجر به فرار از ماشین مجازی شود.

منابع

دیدگاهتان را بنویسید

مطالب مرتبط