يمكن تشغيل خطأ الاستخدام بعد الاستخدام المجاني في برنامج Hypervisor KVM لنظام التشغيل Linux من جهاز افتراضي ضيف لإفساد حالة صفحة الظل للنواة المضيفة التي تقوم بتشغيله.
الثغرة التي يطلق عليها اسم Januscape وتتبعها باسم CVE-2026-53359، تقع في رمز MMU الظلي الذي تشاركه KVM عبر كل من Intel وAMD. إن إثبات المفهوم العام يثير ذعر المضيف؛ يدعي الباحث أن استغلالًا منفصلاً لم يتم إصداره يحول نفس الخطأ إلى تنفيذ كامل لرمز المضيف.
عثر الباحث الأمني هيونوو كيم (@v4bel) على الخطأ وأبلغ عنه. ووصف Januscape بأنه أول استغلال من ضيف إلى مضيف يمكن تشغيله على كل من Intel وAMD، على حد علم الجمهور. وقد ظل هذا الخلل دون أن يلاحظه أحد لمدة 16 عامًا تقريبًا.
وفقًا لكيم، تم استخدام الثغرة كإرسال يوم صفر في برنامج kvmCTF من Google، وهو برنامج مكافأة الثغرات الأمنية في KVM الذي يتم التحكم فيه والذي يقدم ما يصل إلى 250 ألف دولار للهروب الكامل من الضيف إلى المضيف.
كيف يعمل
لتشغيل جهاز افتراضي، تحتفظ KVM بمجموعتها الخاصة من جداول الصفحات التي تعكس تخطيط ذاكرة الضيف. عندما يحتاج إلى إحدى صفحات التتبع هذه، فإنه يبحث عن صفحة موجودة لإعادة استخدامها.
المشكلة: لقد قام بمطابقتها من خلال عنوان الذاكرة وحده وتجاهل نوع صفحة التتبع التي كان يلتقطها. يمكن أن يتشارك نوعان مختلفان في نفس العنوان ولكنهما يؤديان وظائف مختلفة تمامًا، لذلك تعيد KVM أحيانًا استخدام النوع الخطأ.
يؤدي هذا الخلط إلى تشويش السجلات الداخلية لـ KVM الخاصة بالصفحة التي تنتمي إليها، وبمجرد أن تكون هذه السجلات خاطئة، يجب أن يحدث شيء ما.
في معظم الأحيان، تلاحظ النواة الفوضى وتغلق نفسها على الفور لتجنب حدوث أي ضرر. هذا الانهيار هو ما يثيره العرض التوضيحي العام: يمكن للضيف أن يطرق المضيف بأكمله، ويسقط معه كل الأجهزة الافتراضية الأخرى الموجودة على هذا الجهاز.
تحدث الحالة النادرة والأسوأ عندما يتم تسليم صفحة التتبع المحررة لاستخدام آخر قبل تنظيف النواة. تقوم عملية التنظيف بعد ذلك بتدوين قيمة في الذاكرة لم تعد تمتلكها. يتحكم المهاجم فقط في مكان تواجد هذه الكتابة، وليس ما تتم كتابته، ولكن حتى هذا الموطئ المحدود يمكن تشغيله في تشغيل التعليمات البرمجية على المضيف.

يتصرف الخلل بنفس الطريقة على شرائح Intel وAMD؛ فقط الخطوة الأخيرة والأصعب لتحويلها إلى سيطرة كاملة تتطلب عملاً مختلفًا في كل منها.
من يتأثر
الكود الضعيف موجود منذ الالتزام 2032a93d66fa في أغسطس 2010 (عصر النواة 2.6.36) وتم إصلاحه عن طريق الالتزام 81ccda30b4e8، وتم دمجه في الخط الرئيسي في 19 يونيو 2026.
يتطلب الهجوم شيئين من جانب الضيف: الوصول إلى الجذر داخل الجهاز الافتراضي، وهي حالة شائعة في المثيلات السحابية المستأجرة، والمحاكاة الافتراضية المتداخلة التي يكشفها المضيف. حتى على الأجهزة المضيفة التي تقوم بتشغيل EPT أو NPT للأجهزة افتراضيًا، فإن المحاكاة الافتراضية المتداخلة تجبر KVM على العودة عبر وحدة MMU الظلية القديمة، حيث يوجد الخطأ.
لا يحتاج الاستغلال إلى تعاون من QEMU أو أي VMM لمساحة المستخدمين. إنه مجرد خطأ KVM داخل النواة.
الاهتمام العملي هو أي بيئة x86 تستضيف ضيوفًا غير موثوق بهم مع تمكين المحاكاة الافتراضية المتداخلة. يمكن للمهاجم الذي يستأجر نسخة واحدة من هذا القبيل أن يصيب المضيف بالذعر، ويقضي على كل جهاز افتراضي مستأجر آخر على نفس الجهاز الفعلي.
وقال كيم إن الاستغلال الكامل المحجوب يقوم بتشغيل التعليمات البرمجية كجذر على المضيف، الأمر الذي من شأنه أن يعرض الضيوف الآخرين على نفس الجهاز للوصول إلى هذا الجذر. في توزيعات مثل RHEL، حيث /dev/kvm قابل للكتابة عالميًا (0666)، أشار كيم إلى أن نفس الخطأ يمكن أن يعمل أيضًا كتصعيد امتياز محلي إلى الجذر، على الرغم من أن مسار الضيف إلى المضيف هو الاستخدام ذو التأثير الأعلى.
بضعة أشهر مزدحمة لباحث واحد
Januscape هو ثالث اكتشاف لاستغلال نواة Linux لـ Kim خلال شهرين تقريبًا. في مايو 2026، كشف عن Dirty Frag (CVE-2026-43284 / CVE-2026-43500)، وهي سلسلة ثغرات أمنية في الكتابة في ذاكرة التخزين المؤقت للصفحة والتي توفر جذرًا حتميًا في معظم التوزيعات الرئيسية، وتوسع نفس فئة الأخطاء مثل Dirty Pipe وCopy Fail.
في يونيو، نشر ITScape (CVE-2026-46316)، وهو أول هروب من ضيف إلى مضيف تم عرضه علنًا على KVM/arm64، مستغلًا حالة السباق في وحدة تحكم المقاطعة الافتراضية. يضيف Januscape الآن الجانب x86؛ يتم تشغيل نفس المشغل على كل من Intel وAMD، حيث يحمل PoC مسارًا منفصلاً للتعليمات البرمجية لكل بائع.
أطلقت Google kvmCTF في عام 2024 على وجه التحديد لأن KVM تدعم كلاً من Android وGoogle Cloud. تم إصلاح استخدام ترحيل الظل المنفصل لـ KVM x86 بعد الاستخدام المجاني (CVE-2026-46113) والذي يتضمن عدم تطابق rmap ذو صلة ولكن متميز في مايو 2026.
وهذا يجعل اثنين من MMU الظل يستخدمان بعد الاستخدام في نفس مسار الكود القديم في غضون شهرين.
ما يجب القيام به
الإصلاح عبارة عن إضافة سطر واحد إلى kvm_mmu_get_child_sp(): يتحقق شرط إعادة الاستخدام الآن من role.word إلى جانب gfn، لذلك لا تتم إعادة استخدام صفحة الظل إلا عندما يتطابق رقم الإطار والدور. قام باولو بونزيني، مشرف KVM، بكتابة التصحيح.
الإصدارات الثابتة الثابتة التي تم شحنها في 4 يوليو 2026: 7.1.3 و6.18.38 و6.12.95 و6.6.144 و6.1.177 و5.15.211 و5.10.260. لم تقم NVD بعد بتعيين درجة CVSS؛ لا تنتظر واحدة.
إذا كنت تقوم بتشغيل مضيف x86 KVM الذي يقبل الضيوف متعددي المستأجرين باستخدام المحاكاة الافتراضية المتداخلة، فتأكد من أن النواة الخاصة بك تتضمن الالتزام 81ccda30b4e8. قد تحمل منافذ التوزيع الخلفية الإصلاح تحت رقم إصدار مختلف، لذا تحقق من سجل تغييرات الحزمة بدلاً من الاعتماد على uname -r وحده.
إذا لم تتمكن من التصحيح على الفور، فإن تعطيل المحاكاة الافتراضية المتداخلة (kvm_intel.nested=0 أو kvm_amd.nested=0) يؤدي إلى إزالة مسار الهجوم للضيوف غير الموثوق بهم. لا يتأثر مضيفو ARM64 ببرنامج Januscape؛ ITScape (CVE-2026-46316) هي مشكلة منفصلة لـ KVM/arm64.
يُظهر إثبات المفهوم (PoC) العام ذعرًا موثوقًا للمضيف من الضيف باستخدام وحدة kernel قابلة للتحميل وثواني إلى دقائق من السباق. تعامل مع مضيفي x86 KVM المكشوفين باستخدام المحاكاة الافتراضية المتداخلة كأهداف تصحيح ذات أولوية عالية.
