CVE-2026-31466
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: mm/huge_memory: softleaf_to_folio() fonksiyonunda folio kilitlenmeme sorunu düzeltildi arm64 sunucularda, migration girişinden alınan folionun softleaf_to_folio() fonksiyonunda kilitlenmediği tespit edilmiştir. Bu sorun, mTHP bölme işlemi ile zap_nonpresent_ptes() arasında yarış durumu (race condition) oluştuğunda tetiklenmekte olup temel neden softleaf_to_folio() içerisindeki bellek bariyeri eksikliğidir. Yarış durumu şu şekildedir: CPU0 CPU1 deferred_split_scan() zap_nonpresent_ptes() lock folio split_folio() unmap_folio() pte'leri migration girişlerine dönüştür __split_folio_to_order() softleaf_to_folio() kuyruk sayfaları için bayrakları (PG_locked dahil) ayarla folio = pfn_folio(softleaf_to_pfn(entry)) smp_wmb() VM_WARN_ON_ONCE(!folio_test_locked(folio)) kuyruk sayfaları için prep_compound_page() çağır __split_folio_to_order() fonksiyonundaki smp_wmb(), kuyruk sayfalarının bayraklarının, sayfa bileşik olmaktan çıkmadan önce görünür olmasını garanti eder. smp_wmb(), softleaf_to_folio() içerisinde eksik olan smp_rmb() ile eşleştirilmelidir. Sonuç olarak, zap_nonpresent_ptes() kuyruk pfn değerini saklayan migration girişine erişirse, softleaf_to_folio() sayfa->flags değerinden önce güncellenmiş compound_head değerini görebilir. Bu durum, folio bölme ve zap_nonpresent_ptes() arasındaki yarış nedeniyle bir folionun hatalı bir şekilde folio kilidi olmadan modifikasyona uğramasına yol açarak pfn_swap_entry_folio() içerisinde VM_WARN_ON_ONCE() tetikleyecektir. Bu durum, v6.19-rc1 sürümünde birleştirilen 93976a20345b ("mm: eliminate further swapops predicates") commit'inden önce bir BUG_ON() hatasıdır. Sorunu gidermek için, softleaf girişi bir migration girişi ise softleaf_to_folio() ve softleaf_to_page() fonksiyonlarına eksik olan smp_rmb() eklenmiştir. [[email protected]: fonksiyon adı ve yorumlar güncellendi]
Nasıl düzeltilir
- linux linux_kernel5.10.253, 5.15.203, 6.1.168, 6.6.134, 6.12.81, 6.18.21, 6.19.11 ya da sonraki bir sürüm
- git.kernel.org/stable/c/426ee10711586617da869c8bb798214965337617
- git.kernel.org/stable/c/4c5e7f0fcd592801c9cc18f29f80fbee84eb8669
- git.kernel.org/stable/c/722cfaf6b31d31123439e67b5deac6b1261a3dea
- git.kernel.org/stable/c/7ad1997b9bc8032603df8f091761114479285769
- git.kernel.org/stable/c/7ddcf4a245c1c5a91fdd9698757e3d95179ffe41
- git.kernel.org/stable/c/8bfb8414e9f2ce6f5f2f0e3d0da52f2d132128e7
- git.kernel.org/stable/c/b8c49ad888892ad7b77062b9c102b799a3e9b4f8
- git.kernel.org/stable/c/f1acf5887c2bbaf998dc3fe32c72b7a8b84a3ddd
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| linux linux_kernel | 4.5 ≤ v < 5.10.253, 5.11 ≤ v < 5.15.203, 5.16 ≤ v < 6.1.168, 6.2 ≤ v < 6.6.134, 6.7 ≤ v < 6.12.81, 6.13 ≤ v < 6.18.21, 6.19 ≤ v < 6.19.11, 7.0 | 5.10.253, 5.15.203, 6.1.168, 6.6.134, 6.12.81, 6.18.21, 6.19.11 |
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.