CVE-2026-46113
Təsvir
Linux nüvəsində aşağıdakı boşluq aradan qaldırılmışdır: KVM: x86: gözlənilməz GFN səbəbindən kölgə səhifələməsindəki (shadow paging) istifadə-sonrası-azad etmə (use-after-free) probleminin düzəldilməsi Kölgə MMU, sp->gfn və SPTE indeksini istifadə edərək birbaşa kölgə səhifələri üçün GFN-ləri hesablayır. Əgər qonaq səhifə cədvəlləri VM girişləri arasında dəyişdirilirsə, bu fərz kölgə səhifələməsi üçün keçərsiz olur (commit aad885e77496, "KVM: x86/mmu: Drop/zap existing present SPTE even when creating an MMIO SPTE", 2026-03-27 ilə oxşardır). Proses aşağıdakı kimidir: - 2MB xəritələmə üçün PDE quraşdırılır və həmin sahədəki səhifəyə daxil olunur. KVM 512 ədəd 4KB səhifədən ibarət kvm_mmu_page yaradır; qonağın xəritələməsi böyük səhifə (huge page) olduğu üçün (və buna görə də ardıcıl olduğu üçün) kvm_mmu_page FNAME(fetch) tərəfindən birbaşa xəritələnmiş kimi qeyd edilir. - PDE xəritələməsi qonağın xaricindən dəyişdirilir. - Qonaq eyni 2MB sahədəki başqa bir səhifəyə daxil olur. KVM yeni yarpaq SPTE və rmap girişi quraşdırır; SPTE "doğru" GFN-dən (yəni əvvəlki addımda dəyişdirilmiş yeni xəritələməyə əsaslanan) istifadə edir, lakin həmin GFN [sp->gfn, sp->gfn + 511] diapazonundan kənardadır; buna görə də kvm_mmu_page silindikdə (zapped) rmap girişi tapıla və silinə bilmir. - İlk 2MB xəritələməni əhatə edən memslot silinir və artıq etibarsız olan GPA üçün kvm_mmu_page silinir. Lakin rmap_remove() yalnız 1-ci addımda müəyyən edilmiş [sp->gfn, sp->gfn + 511] diapazonuna baxır və 3-cü addımda qeyd edilmiş rmap girişini tapa bilmir. - 3-cü addımda daxil olunan eyni səhifə üçün rmap gəzişinə (rmap walk) səbəb olan hər hansı əməliyyat köhnəlmiş rmap üzrə gəzir və azad edilmiş kvm_mmu_page-ə müraciət edir. Bura çirkli loqlama (dirty logging) və ya MMU bildirişlərinin etibarsızlaşdırılması (məsələn, MADV_DONTNEED vasitəsilə) daxildir. Əsas problem ondadır ki, KVM-in kölgə PTE-lərini gəzişi zamanı belə fərz edilir ki, əgər KVM yarpaq olmayan SPTE quraşdırmaq istədikdə mövcud SPTE varsa, onda mövcud kvm_mmu_page doğru GFN üçün olmalıdır. Çünki GFN-in yanlış olmasının yeganə yolu KVM-in səhv etməsi və SPTE-ni silməyi unutmasıdır... bu baş verməməlidir, lakin faktiki olaraq yalnız qonaq yazma əməliyyasına cavab olaraq baş verir. Bu xəta çox uzun müddətdir mövcuddur, çünki KVM-in hətta ilk versiyası GFN-in uyğun olduğunu fərz edir və "yanlış" kölgə səhifəsinə daxil olur. Lakin bu, 2032a93d66fa ("KVM: MMU: Don't allocate gfns page for direct mmu pages") yeniliyinə qədər yalnız bir qeyri-dəqiqlik idi. Hədəf GFN uyğunsuzluğu yoxlanılaraq və mövcud SPTE silinərək bu problem düzəldildi. Beləliklə, köhnə SP və rmap girişləri silinir, KVM rmap-ı düzgün yerə quraşdırır və sistem stabil işləyir.
Necə düzəltmək olar
- linux linux_kernel6.1.175, 6.6.140, 6.12.88, 6.18.30, 7.0.7 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| linux linux_kernel | 2.6.20 ≤ v < 6.1.175, 6.2 ≤ v < 6.6.140, 6.7 ≤ v < 6.12.88, 6.13 ≤ v < 6.18.30, 6.19 ≤ v < 7.0.7, 7.1 | 6.1.175, 6.6.140, 6.12.88, 6.18.30, 7.0.7 |
Versiyanızı yoxlayın
Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.
Attack Surface Management
Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.