CVE-2021-46978
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: KVM: nVMX: Migrasyon sonrası her zaman eVMCS eşleme girişimi yapın Enlightened VMCS kullanıldığında ve iç içe geçmiş durum (nested state) vmx_get_nested_state()/vmx_set_nested_state() ile migrate edildiğinde, KVM evmcs sayfasını hemen eşleyemez: evmcs gpa bir 'struct kvm_vmx_nested_state_hdr' değildir ve kullanıcı alanı, iç içe geçmiş durumu geri yükledikten sonra HV_X64_MSR_VP_ASSIST_PAGE değerini geri yüklemeye karar verebileceği için bunu VP assist sayfasından okuyamayız (ve örneğin QEMU tam olarak bunu yapar). eVMCS'nin eşlendiğinden emin olmak için /vmx_set_nested_state() bir KVM_REQ_GET_NESTED_STATE_PAGES isteği oluşturur. f2c7ef3ba955 ("KVM: nSVM: nested vmexit sırasında KVM_REQ_GET_NESTED_STATE_PAGES işlemini iptal et") commit'i, migrasyondan hemen sonra L2'den L1'e ani bir çıkış gerçekleştiğinde (örneğin bekleyen bir olay nedeniyle), MSR izin bit eşleminin değiştirilmediğinden emin olmak için nested_vmx_vmexit() fonksiyonuna KVM_REQ_GET_NESTED_STATE_PAGES temizleme işlemi eklemiştir. Ne yazık ki, aynı durumda nested_sync_vmcs12_to_shadow() fonksiyonunun VMCS12'deki değişiklikleri eVMCS'ye yansıtabilmesi için eVMCS'nin hala eşlenmiş olması gerekmektedir. Geçici bir çözüm olarak, nested_vmx_vmexit() içinde KVM_REQ_GET_NESTED_STATE_PAGES temizlenirken nested_get_evmcs_page() geri yüklenir. Olası hataları kolayca yayamadığımız için bu 'düzeltme' ideal olmaktan uzaktır ve yayabilsek bile muhtemelen bunu yapmak için artık çok geçtir. Migrasyon sonrası eVMCS'yi eşlemek için kullanılan tüm 'KVM_REQ_GET_NESTED_STATE_PAGES' fikri, vmx_set_nested_state() üzerinde vmptr yüklemesi gerçekleştiğinde 'yerel' yoldan çok fazla saptığımız için kırılgan görünmektedir.
Nasıl düzeltilir
- linux linux_kernel5.10.38, 5.11.22, 5.12.5 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.10.13 ≤ v < 5.10.38, 5.11 ≤ v < 5.11.22, 5.12 ≤ v < 5.12.5, 5.13 | 5.10.38, 5.11.22, 5.12.5 |
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.