CVE-2026-90040 in Linuxالمعلومات

الملخص

بحسب VulDB • 16/09/2026

في نواة Linux، تم حل الثغرة التالية:

KVM: SEV: إجبار إلغاء مصادقة VMSA الخاصة بـ SNP إذا كان صفحة gmem الداعمة لها قد أُزيلت (zapped)

ربط استدعاء `gmem_invalidate_range()` لعمليات VMs من نوع SNP، واستخدامه لإجبار vCPUs على إعادة تحميل/إعادة فحص VMSA المقدمة من الضيف في حال كانت الصفحة الداعمة gmem قيد الإلغاء، مثل حالة تنفيذ عملية PUNCH_HOLE. استخدام نفس المنطق الأساسي للتعامل مع عمليات الإلغاء كما تفعل VMX بالنسبة لصفحة APIC-access، حيث أن المفهومين متطابقان تقريباً: وضع العنوان الفيزيائي للصفحة في بنية التحكم الخاصة بـ vCPU:

1. أخذ لقطة (Snapshot) لمُعدّد تسلسل الإلغاء 2. الحصول على pfn (من guest_memfd في هذه الحالة) 3. اقتناء mmu_lock للقراءة 4. إعادة طلب التحميل إذا لزم الأمر، وإلا فإن الالتزام بالتغيير يتم مباشرة.

ملاحظة: إجراء إعادة الطلب المذكور في النقطة #4 ضروري لأن منطق إعادة المحاولة الخاص بـ KVM غير دقيق (أي يمكن أن ينتج إيجابيات كاذبة). إذا تم إسقاط صفحة guest_memfd، فسيؤدي ذلك في مرحلة لاحقة إلى فشل عملية التحميل في الحصول على PFN من guest_memfd، وسيفشل KVM عند تنفيذ `KVM_RUN`. وإذا كانت إعادة المحاولة ناتجة عن نتيجة إيجابية كاذبة، فسيعيد KVM المحاولة حتى لا تكون هناك أحداث إشعار MMU ذات صلة (وسيتم إعادة المحاولة ضمن "الحلقة الخارجية"، أي سيتم إسقاط القفل وإعادة جدولة العمليات حسب الحاجة).

ملاحظة #2! انتبه إلى إلغاء VMSA عند حذف أو نقل memslot ذي الصلة، حيث أن عمليات الإلغاء استجابةً لـ PUNCH_HOLE تعتمد على روابط memslot (فـ KVM لا يعرف نطاقات GFN التي يجب إلغاؤها دون وجود رابط). والأهم من ذلك، يتطلب تعيين VMSA وجود memslot، أي يجب إلغاؤه إذا اختفى الـ memslots الخاص به، بغض النظر عن حالة ملف guest_memfd الأساسي.

عدم إلغاء `control.vmsa_pa` الخاصة بـ vCPU (والتي يتم التحقق منها بواسطة `pre_sev_run()`) يمكن أن يمنع KVM من تحرير الصفحة بشكل صحيح لأن البرنامج الثابت سيرفض عملية RMPUPDATE لاستعادة الصفحة مع خطأ FAIL_INUSE إذا كان الـ vCPU يعمل بنشاط، أي إذا كانت صفحة VMSA قيد الاستخدام. وهذا بدوره يؤدي إلى حدوث RMP #PF عند الاستخدام التالي، حيث ستظل الصفحة مُخصصة لـ SNP VM.

SEV-SNP: فشل تحديث RMPUPDATE لعنوان PFN 78d198، مستوى الصفحة (pg_level): 1، النتيجة: 3 SEV-SNP: عنوان PFN 0x78d198، إدخال RMP: [0xfff0000000144001 - 0x000000000000000f]
المعالج (CPU): 3 معرف المستخدم (UID): 0 رقم العملية (PID): 31345 الاسم: sev_snp_vmsa_pu الحالة: مشوه (Tainted) G U O حالة التشويه: [U]=USER, [O]=OOT_MODULE
اسم العتاد: Google, Inc. Arcadia_IT_80/Arcadia_IT_80، البرنامج الثابت (BIOS): 34.86.0-102 تاريخه 01/25/2026 تتبع الاستدعاءات (Call Trace): <TASK> dump_stack_lvl+0x54/0x70 rmpupdate+0x12c/0x140 rmp_make_shared+0x3b/0x60 sev_gmem_invalidate+0xe0/0x170 [kvm_amd]
delete_from_page_cache_batch+0x1d8/0x220 truncate_inode_pages_range+0x120/0x3d0 kvm_gmem_fallocate+0x19a/0x270 [kvm]
vfs_fallocate+0x1bc/0x1f0 __x64_sys_fallocate+0x48/0x70 do_syscall_64+0x10a/0x480 entry_SYSCALL_64_after_hwframe+0x4b/0x53 </TASK> ------------[ cut here ]------------
SEV: فشل تحديث إدخال RMP لعنوان PFN 0x78d198 الخطأ -14 تحذير: arch/x86/kvm/svm/sev.c:5160 عند sev_gmem_invalidate+0x126/0x170 [kvm_amd]، المعالج #3: sev_snp_vmsa_pu/31345
المعالج (CPU): 3 معرف المستخدم (UID): 0 رقم العملية (PID): 31345 الاسم: sev_snp_vmsa_pu الحالة: مشوه G U O حالة التشويه: [U]=USER, [O]=OOT_MODULE
اسم العتاد: Google, Inc. Arcadia_IT_80/Arcadia_IT_80، البرنامج الثابت (BIOS): 34.86.0-102 تاريخه 01/25/2026 عنوان الاستدعاء الفوري (RIP): 0010:sev_gmem_invalidate+0x12b/0x170 [kvm_amd]
تتبع الاستدعاءات (Call Trace): <TASK> delete_from_page_cache_batch+0x1d8/0x220 truncate_inode_pages_range+0x120/0x3d0 kvm_gmem_fallocate+0x19a/0x270 [kvm]
vfs_fallocate+0x1bc/0x1f0 __x64_sys_fallocate+0x48/0x70 do_syscall_64+0x10a/0x480 entry_SYSCALL_64_after_hwframe+0x4b/0x53 </TASK> طابع حدث المقطع (irq event stamp): 20689 تم تفعيل مقاطعات العتاد الصلبة (hardirqs) آخر مرة عند (20699): [<ffffffff8e76092c>] __console_unlock+0x5c/0x60
تم تعطيل مقاطعات العتاد الصلبة (hardirqs) آخر مرة عند (20708): [<ffffffff8e760911>] __console_unlock+0x41/0x60
تم تفعيل المقاطعات البرمجية اللينة (softirqs) آخر مرة عند (20722): [<ffffffff8e6cd74e>] __irq_exit_rcu+0x7e/0x140
تم تعطيل المقاطعات البرمجية اللينة (softirqs) آخر مرة عند (20717): [<ffffffff8e6cd74e>] __irq_exit_rcu+0x7e/0x140
---[ نهاية التتبع 0000000000000000 ]---
خطأ: عدم القدرة على التعامل مع خطأ الصفحة (page fault) للعنوان: ffff99 ---مقتطع---

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

مسؤول

Linux

حجز

11/09/2026

إفشاء

17/09/2026

الاعتدال

تمت الموافقة

إدخال

VDB-405876

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Want to know what is going to be exploited?

We predict KEV entries!