CVE-2021-47639
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: KVM: x86/mmu: TDP MMU'da gfn aralığı eşlemeden çıkarılırken tüm köklerin temizlenmesi (zap) Bir gfn aralığını temizlerken/eşlemeden çıkarırken hem geçerli hem de geçersiz kökleri temizleyin; çünkü KVM, eşleme çıkarma işleminden döndükten sonra serbest bırakılan sayfaya dair hiçbir referans tutmadığından emin olmalıdır. Özellikle TDP MMU, mmu_notifier geri çağırmalarında geçersiz kökleri temizlemez. Bu durum, geçersiz bir kök temizleyici işlem sırasında duraksarken mmu_notifier tamamlandığında, KVM'nin mmu_notifier dönüşünden sonra sayfaya dair hiç referans kalmaması gerekliliğini karşılayamaması nedeniyle serbest bırakıldıktan sonra kullanım (use-after-free) ve diğer sorunlara yol açar. Hata, set_nx_huge_pages() ile kvm_mmu_notifier_release() arasında bir çakışmaya neden olacak şekilde KVM üzerinde değişiklik yapılarak en kolay şekilde yeniden üretilebilir, ancak hata aynı zamanda kvm_mmu_notifier_invalidate_range_start() ile memslot güncellemeleri arasında da mevcuttur. Bir kökün geçersiz kılınması, sayfaların konuk tarafından erişilemez olmasını sağlar ve KVM sayfa verilerini kendisi okumaz veya yazmaz; ancak KVM, SPTE'leri temizlerken örneğin kvm_set_pfn_dirty() işlemini tetikler ve bu nedenle mmu_notifier döndükten sonra geçersiz bir kökün temizleme işleminin tamamlanması kritik hatalara yol açar. WARNING: CPU: 24 PID: 1496 at arch/x86/kvm/../../../virt/kvm/kvm_main.c:173 [kvm] RIP: 0010:kvm_is_zone_device_pfn+0x96/0xa0 [kvm] Call Trace: <TASK> kvm_set_pfn_dirty+0xa8/0xe0 [kvm] __handle_changed_spte+0x2ab/0x5e0 [kvm] __handle_changed_spte+0x2ab/0x5e0 [kvm] __handle_changed_spte+0x2ab/0x5e0 [kvm] zap_gfn_range+0x1f3/0x310 [kvm] kvm_tdp_mmu_zap_invalidated_roots+0x50/0x90 [kvm] kvm_mmu_zap_all_fast+0x177/0x1a0 [kvm] set_nx_huge_pages+0xb4/0x190 [kvm] param_attr_store+0x70/0x100 module_attr_store+0x19/0x30 kernfs_fop_write_iter+0x119/0x1b0 new_sync_write+0x11c/0x1b0 vfs_write+0x1cc/0x270 ksys_write+0x5f/0xe0 do_syscall_64+0x38/0xc0 entry_SYSCALL_64_after_hwframe+0x44/0xae </TASK>
Nasıl düzeltilir
- linux linux_kernel5.15.33, 5.16.19, 5.17.2 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 | 5.13 ≤ v < 5.15.33, 5.16 ≤ v < 5.16.19, 5.17 ≤ v < 5.17.2 | 5.15.33, 5.16.19, 5.17.2 |
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.