CVE-2025-39961
Açıklama
Linux çekirdeğinde aşağıdaki güvenlik açığı giderilmiştir: iommu/amd/pgtbl: Sayfa tablosu seviyesi artırılırken oluşabilecek yarış durumu düzeltildi AMD IOMMU ana bilgisayar sayfa tablosu uygulaması, IOVA adresine bağlı olarak genişleyen ve 3 seviyeli bir yapılandırmayla başlayan dinamik sayfa tablosu seviyelerini (6 seviyeye kadar) destekler. Çekirdek, alloc_pte()/fetch_pte() işlemlerinde uygun sayfa tablosu yürütmelerini sağlamak için bir kök işaretçisi ve mevcut sayfa tablosu seviyesini tutar. IOMMU IOVA ayırıcısı başlangıçta 32 bit adrese başlar ve bu adres tükendiğinde 64 bit adrese geçer (maksimum adres, IOMMU ve cihaz DMA yeteneğine göre belirlenir). Daha büyük IOVA'ları desteklemek için AMD IOMMU sürücüsü sayfa tablosu seviyesini artırır. Ancak eşleme kaldırma yolunda (iommu_v1_unmap_pages()), fetch_pte() fonksiyonu pgtable->[root/mode] değerini kilit olmadan okur. Bu nedenle, uç bir durumda, increase_address_space() fonksiyonu pgtable->[root/mode] değerini güncellerken, fetch_pte()'nin yanlış sayfa tablosu seviyesini (pgtable->mode) okuması mümkündür. Fonksiyon, değeri sayfa tablosunda kodlanmış seviye ile karşılaştırır ve NULL döndürür. Bu durum iommu_unmap işlemlerinin başarısız olmasına neden olur ve üst katman işlemi yeniden deneyebilir veya WARN_ON kaydı oluşturabilir. CPU 0 CPU 1 ------ ------ sayfaları eşle sayfaların eşlemesini kaldır alloc_pte() -> increase_address_space() iommu_v1_unmap_pages() -> fetch_pte() pgtable->root = pte (yeni kök değeri) pgtable->[mode/root] OKUNUR Yeni kökü, eski modu okur Modu günceller (pgtable->mode += 1) Sayfa tablosu seviyesi güncellemeleri seyrek olduğu ve halihazırda bir spinlock ile senkronize edildiği için, okuma yolunda kilitsiz okuma işlemlerini etkinleştirmek amacıyla seqcount uygulandı.
Nasıl düzeltilir
- linux linux_kernel4.10, 4.15, 4.20, 5.3, 6.6.108, 6.12.49, 6.16.9 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 | 4.9.194 ≤ v < 4.10, 4.14.146 ≤ v < 4.15, 4.19.75 ≤ v < 4.20, 5.2.17 ≤ v < 5.3, 5.3.1 ≤ v < 6.6.108, 6.7 ≤ v < 6.12.49, 6.13 ≤ v < 6.16.9, 5.3, 6.17 | 4.10, 4.15, 4.20, 5.3, 6.6.108, 6.12.49, 6.16.9 |
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.