این مسئله نشان میدهد که در سامانههای آسیبپذیر، بخشهای مخرب موجود در ماشینهای مجازی میتوانند از محدوده خود فراتر عمل کرده و اقدام به تقابلهای مخرب با کارگزار میزبان یا دیگر مهمانهای آن میزبان نماید. این اتفاقات برای محیطهای به اشتراکگذاری ناگوار خواهد بود.
تمامی نسخههای متنباز Xen این آسیبپذیری با شناسه CVE-2016-6258 و شناسهی اختصاصیِ XSA-182 را دارند .البته این آسیبپذیری فقط در سامانههای مهمان نیمه مجازی شده یا Para-virtualized دارای سختافزارهای x86 مورد سوءاستفاده واقع میشود. این اشکال توسط جرمی بوتویل از شرکت Quarkslab کشف شد و در روز سهشنبه وصله لازم برای این اشکال در نسخههای ۴٫۳ تا ۴٫۷ Xen و همچنین کدهای پایانی این ابرناظر منتشر شد.
ابرناظرِ Xen در بیشتر بخشهای اینترنت مشاهده میشود و طراحان ابر برای مدیریت و اجرای ماشینهای مجازی از این ابزار استفاده میکنند. اگر میزبان ابر شما در ماه جاری دچار اختلال شده باشد، لازم است که وصله لازم برای این بخش از سامانه خود را استفاده کنید. شرکت آمازون یکی از ارائهدهندگان خدمات ابری و ماشینهای مجازی که از پروژهی Xen بهره میبرد، در این مورد اعلام کرده است که بخش خدمات اینترنتی این شرکت خوشبختانه به این مشکل دچار نشده است. تیم طراح Xen معمولاً جزئیات اطلاعیههای آسیبپذیری مربوط به خود را در اختیار کسانی که نیاز به این اطلاعیهها دارند قرار میدهد؛ بنابراین، وصلههای طراحیشده را میتوان قبل از اعلان عمومی اطلاعات در دسترس کاربران قرار داد و به همین دلیل است که هر نفوذگری میتواند از آسیبپذیریها سوءاستفاده کند.
تیم امنیتی Xen در این خصوص بیان داشت: «در ماشینهای نیمهمجازی شده جدول صفحه، طول مسیر دستور کوتاهتری برای بهروزرسانی جدول صفحههای موجود از قبل دارد. این عمل به این منظور انجام میشود که در موارد امن و بدون مشکل (مانند پاکسازی بیتهای کثیف یا بیتهای دستیابی)، اعتبارسنجی سنگینی را متحمل نشویم. بیتهایی که در این فرآیند بدون مشکل تلقی میشوند، زیاد هستند و البته کاملاً هم بدون مشکل و امن نیستند.»
به عبارت دیگر، هنگامیکه هسته سامانههای مهمان ساختارهای اطلاعاتی مربوط به برنامهریزی حافظه در یک ماشین مجازی را بهروزرسانی میکنند، Xen باید برخی بیتهای موجود در پرچم را نادیده بگیرد. اساس کار مجازیسازی، کنترل و محدود کردن فعالیتهای مهمان است. در ابرناظر Xen، اقدام کافی برای محافظت از بیتها در جدولهای صفحه میزبان رخ نمیدهد. همچنین باید یادآوری کرد که این جدولها در میزبان را میتوان به منظور دسترسی مهمان به دیگر بخشهای سامانه، تغییر داد.
در این خصوص یک پروژه متنباز با ماهیت افزایش آگاهی در حوزه امنیت با نام Qubes وجود دارد که از Xen برای کاهش امکان استفاده برنامهها از یکدیگر استفاده میکند. طراحان این پروژه تاکنون اطمینان کسب نکردهاند که آیا آسیبپذیری XSA-182 را بتوان به راحتی مورد سوءاستفاده قرار داد. کاربران این پروژه باید نسخههای بهروزرسانی شده از Xen را نصب کنند.
تیم طراح این پروژه روز سهشنبه طی یک اعلامیه اذعان کرد: «برای برقراری امنیت و عدم بروز مشکل، تصمیم این تیم طراحی بر آن است که در هر صورت مشکل موجود را بررسی و آن را رفع کند. باید توجه داشت که در کنار تمامی مسائل، این مشکل برخی برنامهریزیهای انجامشده در مورد ثبات ساختارهای نقشهکشی حافظه را تحت شعاع قرار میدهد. مسئلهای که در طول ۲۴ ساعت گذشته توجیه و اطلاعات کافی در مورد میزان امکان بهرهبرداری از آن حاصل نشده است را نباید یک عامل خطر ساده تصور کرد.»
مشکل برنامهنویسی حاضر، مشابه آسیبپذیری دارای شناسه XSA-148 کشف شده در اکتبر است که به سامانههای مهمان این امکان را میداد خارج از محدوده میزبان فعالیت کنند.
مشکل اصلی این است که Xen کدی به شکل زیر دارد:
این کد علاوه بر اینکه ظاهر نامتناسبی دارد، یک کد مشکلدار است. در یک بخش دیگر نیز یک کدی وجود دارد که البته مشکل ناشی از آن از مورد قبلی کمتر است:
همواره بخشهای بررسیکنندهای مانند این برای هر صفحه از سطحهای جدول وجود دارد. بخشهای – (PAGE_CACHE_ATTRS | _PAGE_RW | _PAGE_PRESENT) and (_PAGE_PSE | _PAGE_RW | _PAGE_PRESENT) – راحتتر توسط انسان شناخته میشوند و البته کامل هم نیستند. وصلههای طراحیشده نیز این بخشها را با بخشهای زیر تعویض میکنند:
با توجه به این مسائل، میتوان اطمینان داشت که نه تنها این دو مثال، بلکه تمامی بخشهای بررسیکننده یک مجموعه ساده و یکپارچه از پرچمها هستند که استفاده از آنها به دلیل امنیتشان بلامانع است. یادداشت وصله در این خصوص عنوان میکند: «از این عوامل امن استفاده کنید و بهراحتی دستورالعملهای آنها را اجرا کنید.»
همچنین شایانذکر است که پرونده منبع Xen's mm.c ۱۹۰ کیلوبایت حجم داشته و ۶۵۰۵ خط دارد.
تیم طراح پروژه Qubes با انتقاد از عملکرد مهندسان Xen اعلام کردند: «این آسیبپذیری که دومین اشکال و آسیبپذیری در کدهای مجازیسازی Xen به شمار میرود و به صورت علنی در بازه زمانی کوتاهی مورد بحث واقع شده است، به راحتی قابل فراموشی و اغماض نیست. این مسئله را باید با جوابهای شفاف پاسخ داد. باید دانست که آیا Xen را طراحان ماهر در این حوزه طراحی کردهاند؟ چند آسیبپذیری دیگر با این میزان از خطر در طراحیهای آینده از این قبیل وجود خواهد داشت؟ برای جلوگیری از سوءاستفاده از آسیبپذیریها چه اقداماتی را میتوان و باید انجام داد؟»
طراحان این پروژه معتقدند که جواب آخرین سؤال، مجازیسازی حافظه سختافزاری (یا همان ترجمه نشانی سطح دوم یا صفحهبندی تودرتو ) است که نسخه ۴.۰ این پروژه در نظر دارد از این اقدام پردهبرداری کند. این پروژه روش سامانهعامل خود را از استفاده از روشهای قدیمی به استفاده از روشهای جدید نیمه مجازیسازی تغییر داده است.
بخش بزرگی از هستههای AMD و ARM Cortex صفحهسازیهای تودرتو را طراحی میکنند و سامانه عامل Qubes میتواند از سامانههای مهمان جداگانه در یک میزبان استفاده کند. فرآیند صفحهسازی تودرتو متشکل از دو مجموعه جدول صفحه است که یکی از این مجموعهها حافظه مجازی مهمان را به صورت حافظه فیزیکی طراحی میکند و مجموعه دوم نیز حافظه فیزیکی را به حافظه میزبان تبدیل میکند. سامانههای مهمان نیز میتوانند از مجموعه اول برای محتوای اصلی خود استفاده کنند، اما مجموعه دوم توسط فوقناظر و سختافزار به صورت جداگانه نگهداری میشوند تا از این طریق ماشینهای مجازی به دلیل فعالیت جدولهای صفحه مهم موجود در بخش CPU میزبان آسیب نبینند.
فرآیند صفحهسازی تودرتو مدت کوتاهی است که در این حوزه مطرح شده است و امنیت و عملکرد بهتری را ارائه میدهد. این روش همچنین توسط فوقناظرهای Xen ،Hyper-V ،KVM ،VMware ،VirtualBox ،Parallels ،bhyve ،OpenBSD و همچنین انواع دیگر این ابزارها پشتیبانی میشود.
تیم طراحی کننده پروژه Qubes همچنین یادآور شدند که کدهای این پروژه مختص Xen نیستند. این مسئله امکان استفاده از این کدها را در یک فوقناظر جایگزینی میدهد. شایانذکر است که تلاشها برای مصاحبه با سخنگوی تیم طراحی کننده Xen برای توضیحات بیشتر در این زمینه به پاسخی منجر نشده است.