یک آسیبپذیری بحرانی در ماشین مجازی مبتنی بر هسته لینوکس (KVM) برای سیستمهای ARM64 شناسایی شده است که به مهاجمان اجازه میدهد از محیط ماشین مجازی (Guest) خارج شده و دسترسی خواندن و نوشتن به حافظه هسته میزبان (Host Kernel Memory) پیدا کنند.
تحلیل فنی آسیبپذیری CVE-2026-89775
این نقص امنیتی که با شناسه CVE-2026-89775 ردیابی میشود، بهطور خاص میزبانهای ARM64 را که قابلیت مجازیسازی تودرتو (Nested Virtualization) در آنها فعال است، هدف قرار میدهد. این باگ در نحوه مدیریت ساختارهای کنترلی مجازیسازی CPU در KVM/arm64 ریشه دارد.
از نظر فنی، این مشکل ناشی از یک خطای Type Truncation در سطح پیمایش جدول صفحات (Stage-1 Page-table Walk) است. در هنگام مدیریت ترجمه آدرس، این قطعشدگی باعث میشود محاسبه اندازه (Size Calculation) مقدار صفر را برگرداند. در حالی که مقدار صفر باید نشاندهنده اندازه ناشناخته باشد، مسیر ابطال TLB در Virtual Nested Control Register (VNCR) این مقدار را به اشتباه به عنوان یک محدوده اندازه معتبر تفسیر میکند.
در نتیجه، عملیات ابطال (Invalidation) نادیده گرفته شده و یک نگاشت قدیمی (Stale Mapping) ایجاد میشود. این وضعیت باعث میشود صفحهای از حافظه میزبان که پیشتر آزاد شده است، همچنان با دسترسی نوشتن (Writable) در محیط ماشین مجازی تحت کنترل مهاجم باقی بماند.
تاثیرات امنیتی و ریسکهای عملیاتی
- فرار از VM: مهاجم میتواند عملیات خواندن و نوشتن ۶۴ بیتی را روی یک آدرس ثابت و قابل پیشبینی در حافظه میزبان انجام دهد، بدون اینکه باعث ایجاد Trap یا VM Exit شود.
- محیطهای ابری: این آسیبپذیری برای محیطهای ابری چندمستاجری (Multi-tenant) که از ARM64 و مجازیسازی تودرتو استفاده میکنند، بسیار خطرناک است.
- ارتقای سطح دسترسی (LPE): در برخی توزیعهای لینوکس (مانند برخی پیکربندیهای Red Hat Enterprise Linux)، دسترسی به
/dev/kvmبا مجوزهای 0666 باز است. در این صورت، یک کاربر محلی بدون دسترسی، میتواند از این باگ برای دستیابی به سطح دسترسی Root در میزبان استفاده کند.
راهکارهای مقابله و اصلاح
کد آسیبپذیر در commit شماره 7270cc9157f47 معرفی شده بود و در commit شماره 8053393680d4 اصلاح گردید. مدیران سیستم و تیمهای امنیت باید اقدامات زیر را به سرعت اجرا کنند:
- بهروزرسانی هسته: ارتقاء به آخرین نسخه Kernel که شامل پچهای رسمی است.
- غیرفعالسازی Nested Virtualization: در صورتی که این قابلیت برای عملیات ضروری نیست، باید فوراً غیرفعال شود.
- محدود کردن دسترسیها: محدود کردن دسترسی به فایل
/dev/kvmتنها برای کاربران و سرویسهای مورد اعتماد. - مانیتورینگ: بررسی نسخههای کرنل در تمامی میزبانهای مجازیسازی ARM64 و رصد اطلاعیههای венدورها برای پچهای Backported.