CVE-2026-31588

Yüksek

Açıklama

Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: KVM: x86: Küçük yazma değerlerini tutmak için MMIO parçasındaki scratch alanını kullanın Emüle edilen bir MMIO yazmasını sunmak üzere kullanıcı alanına çıkarken, veri yükünün boyutu 8 bayt veya daha küçükse, yani tek bir parçaya sığabiliyorsa, parçayı doğrudan kaynak değere işaret ettirmek yerine yazılacak değeri MMIO parçasındaki bir scratch alanına kopyalayın. Bu, emülatörün kaynak olarak yığın üzerindeki yerel bir değişkeni kullanarak bir yazma başlatması, yazmanın bir sayfa sınırını bölmesi *ve* her iki sayfanın da MMIO sayfası olması durumunda ortaya çıkan bir serbest bırakıldıktan sonra kullanım hata sınıfını düzeltir. KVM'nin ABI'si yalnızca fiziksel olarak bitişik MMIO isteklerine izin verdiğinden, MMIO sayfalarını bölen erişimler iki parçaya ayrılır ve kullanıcı alanına tek tek gönderilir. KVM, ilk parçanın ardından KVM_RUN'a yanıt olarak kullanıcı alanı MMIO'sunu tamamlamaya çalıştığında, KVM ikinci parçayı algılar ve ikinci bir kullanıcı alanı çıkışı oluşturur ve yığın üzerindeki değişkene başvurur. Sorun, ikinci KVM_RUN ayrı bir görev tarafından gerçekleştirildiğinde en belirgin hale gelir; bu durumda başlatan görevin yığını gerçekten serbest bırakılmış veri olarak görünebilir. ================================================================== BUG: KASAN: use-after-free in complete_emulated_mmio+0x305/0x420 Read of size 1 at addr ffff888009c378d1 by task syz-executor417/984 CPU: 1 PID: 984 Comm: syz-executor417 Not tainted 5.10.0-182.0.0.95.h2627.eulerosv2r13.x86_64 #3 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.15.0-0-g2dd4b9b3f840-prebuilt.qemu.org 04/01/2014 Call Trace: dump_stack+0xbe/0xfd print_address_description.constprop.0+0x19/0x170 __kasan_report.cold+0x6c/0x84 kasan_report+0x3a/0x50 check_memory_region+0xfd/0x1f0 memcpy+0x20/0x60 complete_emulated_mmio+0x305/0x420 kvm_arch_vcpu_ioctl_run+0x63f/0x6d0 kvm_vcpu_ioctl+0x413/0xb20 __se_sys_ioctl+0x111/0x160 do_syscall_64+0x30/0x40 entry_SYSCALL_64_after_hwframe+0x67/0xd1 RIP: 0033:0x42477d Code: <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007faa8e6890e8 EFLAGS: 00000246 ORIG_RAX: 0000000000000010 RAX: ffffffffffffffda RBX: 00000000004d7338 RCX: 000000000042477d RDX: 0000000000000000 RSI: 000000000000ae80 RDI: 0000000000000005 RBP: 00000000004d7330 R08: 00007fff28d546df R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 00000000004d733c R13: 0000000000000000 R14: 000000000040a200 R15: 00007fff28d54720 The buggy address belongs to the page: page:0000000029f6a428 refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x9c37 flags: 0xfffffc0000000(node=0|zone=1|lastcpupid=0x1fffff) raw: 000fffffc0000000 0000000000000000 ffffea0000270dc8 0000000000000000 raw: 0000000000000000 0000000000000000 00000000ffffffff 0000000000000000 page dumped because: kasan: bad access detected Memory state around the buggy address: ffff888009c37780: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ffff888009c37800: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >ffff888009c37880: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ^ ffff888009c37900: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ffff888009c37980: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ================================================================== Hata ayrıca, KVM'de complete_emulated_mmio() içinde büyük bir yığın üzeri değişkeni doldurmak, yani veri değerinin üzerine çöp veri yazmak suretiyle hedeflenmiş bir KVM-Unit-Test ile de yeniden üretilebilir. Scratch alanlarının kullanımını 8 bayt veya daha küçük erişimlerle ve yalnızca yazmalarla sınırlayın; çünkü emülatördeki uygulama ayrıntıları sayesinde daha büyük erişimler ve okumalar etkilenmez, ancak bu ayrıntıların gelecekte değişmemesini sağlamak için bir sağlamlık denetimi ekleyin. Özellikle KVM, 8 bayttan büyük erişimler için hiçbir zaman yığın üzeri değişkenler kullanmaz, ör. emülatör bağlamındaki bir işleneni kullanır ve *al ---kısaltıldı---

ÖnemYüksek
CVSS8.8
İstismar olasılığı—
ÜrünLinux Kernel
Yayın24 Nis 2026
İlk görülme24 Nis 2026

Nasıl düzeltilir

Güncelleyin
  • linux linux_kernel6.6.136, 6.12.83, 6.18.24, 6.19.14, 7.0.1 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
linux linux_kernel3.5 ≤ v < 6.6.136, 6.7 ≤ v < 6.12.83, 6.13 ≤ v < 6.18.24, 6.19 ≤ v < 6.19.14, 7.0 ≤ v < 7.0.16.6.136, 6.12.83, 6.18.24, 6.19.14, 7.0.1

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.

Intelligence 360 paketinde

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.

CVE-2026-31588 · Linux Kernel · Dark Radar