CVE-2026-90040
Açıklama
Linux kernel'de aşağıdaki güvenlik açığı giderilmiştir: KVM: SEV: Destekleyici gmem sayfası silindiğinde SNP VMSA'yı zorla geçersiz kılın SNP VM'ler için bir gmem_invalidate_range() çağrısı yapılandırılmıştır ve destekleyici gmem sayfası örneğin PUNCH_HOLE ile geçersiz kılındığında, vCPU'ların konuk tarafından sağlanan VMSA'larını yeniden yüklemelerini veya yeniden kontrol etmelerini zorlamak için kullanılır. İki kavram neredeyse aynı olduğu için, geçersiz kılmaları yönetmek amacıyla VMX'in APIC-erişim sayfası için kullandığı temel mantık kullanılarak sayfanın fiziksel adresi vCPU'nun kontrol yapısına aktarılır: 1. Geçersiz kılma sıra sayacının anlık görüntüsü alınır 2. pfn değeri alınır (bu durumda guest_memfd üzerinden) 3. Okuma için mmu_lock edinilir 4. Yeniden deneme gerekiyorsa yeniden yükleme talep edilir, aksi takdirde değişiklik onaylanır. Not olarak, KVM'nin yeniden deneme mantığı belirsiz olduğundan (yani yanlış pozitifler oluşabildiğinden), #4'teki yeniden talep işlemi gereklidir. Eğer guest_memfd sayfası düşürülmüşse, bir noktada sonraki yeniden yükleme guest_memfd'den bir PFN almayı başaramayacak ve KVM, KVM_RUN işlemini başarısız kılacaktır. Eğer yeniden deneme yanlış bir pozitiften kaynaklanmışsa, KVM ilgili MMU bildirim olayları kalmayana kadar yeniden deneyecektir (ve bunu "dış" döngüde yaparak gerektiğinde kilitleri bırakıp yeniden zamanlama yapacaktır). Not #2! İlgili bir memslot DELETED veya MOVED durumunda VMSA'nın geçersiz kılınmasına dikkat edilmelidir; çünkü PUNCH_HOLE yanıtındaki geçersiz kılmalar memslot bağlamalarına dayanmaktadır (KVM, bir bağlama olmadan hangi GFN aralıklarının geçersiz kılınacağını bilemez). Daha da önemlisi, VMSA eşlemesi bir memslot gerektirir, yani alt katmandaki guest_memfd inode durumuna bakılmaksızın, memslot'lar kaybolursa geçersiz kılınmalıdır. vCPU'nun control.vmsa_pa değerinin (pre_sev_run() tarafından kontrol edilir) geçersiz kılınmaması, KVM'nin sayfayı düzgün şekilde serbest bırakmasını engelleyebilir; çünkü vCPU aktif olarak çalışıyorsa (yani VMSA sayfası kullanımdaysa), aygıt yazılımı sayfayı geri almak için yapılan RMPUPDATE işlemini FAIL_INUSE ile reddedecektir. Bu durum ise sayfa hala SNP VM'ye atanmış olacağı için bir sonraki kullanımda RMP #PF hatasına yol açacaktır. SEV-SNP: RMPUPDATE failed for PFN 78d198, pg_level: 1, ret: 3 SEV-SNP: PFN 0x78d198, RMP entry: [0xfff0000000144001 - 0x000000000000000f] CPU: 3 UID: 0 PID: 31345 Comm: sev_snp_vmsa_pu Tainted: G U O Tainted: [U]=USER, [O]=OOT_MODULE Hardware name: 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 RIP: 0033:0x496c7e </TASK> ------------[ cut here ]------------ SEV: Failed to update RMP entry for PFN 0x78d198 error -14 WARNING: arch/x86/kvm/svm/sev.c:5160 at sev_gmem_invalidate+0x126/0x170 [kvm_amd], CPU#3: sev_snp_vmsa_pu/31345 CPU: 3 UID: 0 PID: 31345 Comm: sev_snp_vmsa_pu Tainted: G U O Tainted: [U]=USER, [O]=OOT_MODULE Hardware name: 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 RIP: 0033:0x496c7e </TASK> irq event stamp: 20689 hardirqs last enabled at (20699): [<ffffffff8e76092c>] __console_unlock+0x5c/0x60 hardirqs last disabled at (20708): [<ffffffff8e760911>] __console_unlock+0x41/0x60 softirqs last enabled at (20722): [<ffffffff8e6cd74e>] __irq_exit_rcu+0x7e/0x140 softirqs last disabled at (20717): [<ffffffff8e6cd74e>] __irq_exit_rcu+0x7e/0x140 ---[ end trace 0000000000000000 ]--- BUG: unable to handle page fault for address: ffff99 ---truncated---
Nasıl düzeltilir
- Linux Linuxef4dee4640c6adc3051401399b0788135e77d50b, 2640cc26ed0dd1bf6ec2f6852a60e494093db3e5, d1a3c216233413f57f5341a9b878b7e2dde7e785 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| Linux Linux | e366f92ea99e1961fbad5e2110900e9f4fcb249b ≤ v < ef4dee4640c6adc3051401399b0788135e77d50b, e366f92ea99e1961fbad5e2110900e9f4fcb249b ≤ v < 2640cc26ed0dd1bf6ec2f6852a60e494093db3e5, e366f92ea99e1961fbad5e2110900e9f4fcb249b ≤ v < d1a3c216233413f57f5341a9b878b7e2dde7e785, 6.11 | ef4dee4640c6adc3051401399b0788135e77d50b, 2640cc26ed0dd1bf6ec2f6852a60e494093db3e5, d1a3c216233413f57f5341a9b878b7e2dde7e785 |
Sürümünüzü kontrol edin
Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.
Attack Surface Management
Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.