CVE-2026-53360
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: KVM: SEV: GHCB v2+ kullanılıyorsa in-GHCB scratch alanı gereksinimi GHCB spesifikasyonuna göre, GHCB v2+ kullanılırken yazılım scratch alanının GHCB'nin paylaşılan tamponunda yer alması gerekir. Sayfa Durumu Değişikliği (Page State Change - PSC) istekleri gibi işlemler bu davranışa dayanır; çünkü konuk makine isteği yaparken bir uzunluk belirtemez, yani konuk yükünün boyutu paylaşılan tamponun boyutu ile sınırlıdır. GHCB kullanımının zorunlu kılınmaması ve diğer birçok kusur, kötü niyetli bir SNP konuğunun ana bilgisayar çekirdek yığın belleğini bozmasına ve ana bilgisayar yığın düzeni bilgilerini sızdırmasına olanak tanır. setup_vmgexit_scratch(), konuk tarafından kontrol edilen exit_info_2 üzerinden kvzalloc(exit_info_2) aracılığıyla bir tampon ayırır. exit_info_2=24 olduğunda, bu durum kmalloc-cg-32'de (32 baytlık slab nesneleri) 24 baytlık bir tahsis sağlar. Tampon, ardından 8 baytlık psc_entry yapıları gelen 8 baytlık bir psc_hdr içerir, dolayısıyla yalnızca entries[0] ve entries[1] sınırlar içerisindedir. snp_begin_psc(), end_entry değerini VMGEXIT_PSC_MAX_COUNT (253) değerine karşı doğrular ancak gerçek tampon boyutuna karşı doğrulamaz: idx_end = hdr->end_entry; if (idx_end >= VMGEXIT_PSC_MAX_COUNT) { // tamponu değil, 253'ü kontrol eder snp_complete_psc(svm, ...); return 1; } for (idx = idx_start; idx <= idx_end; idx++) { entry_start = entries[idx]; // idx >= 2 olduğunda sınır dışı (OOB) erişim gerçekleşir Konuk, end_entry=10+ olarak ayarlayarak ana bilgisayarın, bitişik slab nesnelerine doğru sınır dışı (OOB) olan entries[2+] üzerinde yineleme yapmasına neden olur. Her bir OOB girişi için: - Ana bilgisayar 8 bayt okur (OOB OKUMA / bilgi sızıntısı oraklı) - Veriler PSC doğrulamasından geçerse, __snp_complete_one_psc() girişine cur_page = 1 veya 512 yazar (OOB YAZMA, sev.c:3806) - Doğrulama başarısız olursa, hata yanıtı bitişik belleğin sıfır mı yoksa sıfırdan farklı mı olduğunu ortaya çıkarır (konuğa bilgi ifşası) Konuk; tahsis boyutunu (exit_info_2), giriş aralığını (cur_entry/end_entry) kontrol edebilir ve farklı slab konumlarına tekrar tekrar ulaşmak için sınırsız sayıda VMGEXIT tetikleyebilir. Çeşitli hatalardan yararlanarak, kötü niyetli bir SEV-SNP konuğu şunları yapabilir: - Bitişik kmalloc-cg-32 nesnelerini OOB okuyabilir (yığın düzeni ifşası) - Bitişik nesnelere cur_page bitlerini OOB yazabilir (yığın bozulması) - VMGEXIT'ler arasında serbest bırakıldıktan sonra kullanım (use-after-free) koşullarını tetikleyebilir Örneğin, KASAN etkinleştirildiğinde, PoC konuk modülünün tek bir insmod işlemi 73 KASAN raporu üretmektedir: BUG: KASAN: slab-out-of-bounds in snp_begin_psc+0x126/0x890 Read of size 8 at addr ffff888219ffb5e0 by task qemu-system-x86/2199 BUG: KASAN: slab-out-of-bounds in snp_begin_psc+0x468/0x890 Write of size 8 at addr ffff888351566648 by task qemu-system-x86/2199 Hatalı adres, ffff888XXXXXXXXX adresindeki nesneye aittir ve bu nesne 32 boyutundaki kmalloc-cg-32 önbelleğine aittir Hatalı adres, tahsis edilen 32 baytlık bölgenin [ffff888XXXXXXXXX, ffff888XXXXXXXXX) N bayt sağında yer almaktadır Döküm: 62 slab-out-of-bounds (tahsis sonrası okumalar + yazmalar) 7 slab-use-after-free 4 use-after-free
Nasıl düzeltilir
- linux linux_kernel6.12.93, 6.18.35, 7.0.12 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| linux linux_kernel | 6.10 ≤ v < 6.12.93, 6.13 ≤ v < 6.18.35, 6.19 ≤ v < 7.0.12, 7.1 | 6.12.93, 6.18.35, 7.0.12 |
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.