CVE-2026-53300
Açıklama
Linux kernel içerisinde aşağıdaki güvenlik açığı giderilmiştir: net: enetc: NTMP DMA serbest bırakıldıktan sonra kullanım (use-after-free) sorunu düzeltildi Yapay zeka tarafından oluşturulan inceleme, potansiyel bir DMA serbest bırakıldıktan sonra kullanım sorunu [1] bildirmiştir. Eğer netc_xmit_ntmp_cmd() zaman aşımına uğrar ve hata döndürürse, bekleyen komut açıkça iptal edilmezken ntmp_free_data_mem() DMA tampon belleğini koşulsuz olarak serbest bırakır. Tampon bellek başka bir yerde yeniden tahsis edilmişse, bu durum sessiz bellek bozulmasına yol açabilir; çünkü donanım sonunda bekleyen komutu işler ve yanıtın DMA yazmasını serbest bırakılan tamponun fiziksel adresine gerçekleştirir. Bu sorunu çözmek için bu yama şu değişiklikleri yapmaktadır: 1. cbdr->ring_lock, spinlock'tan mutex'e dönüştürüldü Kilit, başlangıçta NTMP işlemlerinin atomik bağlamdan çağrılabileceği ihtimaline karşı bir spinlock idi. Tüm NTMP tabloları için alt akış desteği sağlandıktan sonra böyle bir kullanım ortaya çıkmamıştır. Sürücü artık kullanılan BD'leri geri kazanmak ve ilişkili DMA belleğini kilidin bağlamında serbest bırakmak zorunda olduğundan ve dma_free_coherent() uyku moduna geçebileceğinden, artık bir mutex kilidi gereklidir. 2. Yazılımsal komut BD (struct netc_swcbd) tanıtıldı Donanım geri yazımı (write-back), BD'nin addr ve len alanlarının üzerine yazar, bu nedenle sürücü ilgili DMA belleğini serbest bırakmak için donanım BD'sine güvenemez. Sürücü artık DMA tampon işaretçisini, DMA adresini ve boyutunu saklayan yazılımsal bir gölge BD tutmaktadır. Ve netc_xmit_ntmp_cmd(), yalnızca kullanılan BD sayısı NETC_CBDR_CLEAN_WORK (16) değerine ulaştığında eski BD'leri geri kazanır. Yazılım BD, doğru DMA bellek serbest bırakılmasını sağlar. Bununla birlikte, struct ntmp_dma_buf ve ntmp_free_data_mem() artık gerekli değildir ve kaldırılmıştır. 3. Çağrıcıların netc_xmit_ntmp_cmd() boyunca ring_lock'u tutması zorunlu kılındı netc_xmit_ntmp_cmd(), çağırıcı yanıtı tüketmeyi bitirmeden önce ring_lock'u serbest bırakır. Bu noktada, eşzamanlı bir iş parçacığı yeni bir komut gönderirse, ntmp_clean_cbdr()'yi tetikleyebilir ve DMA tamponu hala kullanımdayken onu serbest bırakabilir. Yanıt tamponunun vaktinden önce geri kazanılmamasını sağlamak için ring_lock sahipliği çağırıcıya taşınmıştır. Bu nedenle ntmp_select_and_lock_cbdr() ve ntmp_unlock_cbdr() yardımcı fonksiyonları eklenmiştir. Bu değişiklikler, DMA serbest bırakıldıktan sonra kullanım durumunu ortadan kaldırır; güvenli ve tutarlı BD geri kazanımı ile DMA tampon yaşam döngüsü yönetimini sağlar.
Nasıl düzeltilir
- linux linux_kernel6.18.33, 7.0.10 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 | 6.16 ≤ v < 6.18.33, 6.19 ≤ v < 7.0.10 | 6.18.33, 7.0.10 |
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.