CVE-2026-53300
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: net: enetc: NTMP DMA use-after-free probleminin həlli Süni intellekt tərəfindən hazırlanmış nəzərdən keçirmə potensial DMA use-after-free problemi [1] haqqında məlumat vermişdir. Əgər netc_xmit_ntmp_cmd() vaxtaşımıya uğrayarsa və xəta qaytararsa, gözlənilən əmr açıq şəkildə ləğv edilmir, eyni zamanda ntmp_free_data_mem() şərtsiz olaraq DMA buferini azad edir. Bufer artıq başqa yerdə yenidən təyin edilmişdirsə, bu, səssiz yaddaş korlanmasına səbəb ola bilər. Çünki aparat təminatı sonda gözlənilən əmri emal edir və cavabın DMA yazılmasını azad edilmiş buferin fiziki ünvanına yerinə yetirir. Bu problemi həll etmək üçün bu yamada aşağıdakı dəyişikliklər edilir: 1. cbdr->ring_lock spinlock-dan mutex-ə çevrilmişdir NTMP əməliyyatlarının atomik kontekstdən çağırıla biləcəyi ehtimalına qarşı kilid əvvəlcə spinlock idi. Bütün NTMP cədvəlləri üçün downstream dəstəyindən sonra belə bir istifadə halı ortaya çıxmamışdır. İndi mutex kilidi tələb olunur, çünki drayver artıq istifadə edilmiş BD-ləri geri almağa və kilidin konteksti daxilində əlaqəli DMA yaddaşını azad etməyə ehtiyac duyur, halbuki dma_free_coherent() yata bilər (sleep). 2. Proqram təminatı əmri BD (struct netc_swcbd) tətbiq edilmişdir Aparat təminatının geri yazılması (write-back) BD-nin addr və len sahələrini overwrite edir, buna görə də drayver əlaqəli DMA yaddaşını azad etmək üçün aparat BD-sinə güvənə bilməz. Drayver artıq DMA bufer göstəricisini, DMA ünvanını və ölçüsünü saxlayan proqram təminatı kölgə BD-sini idarə edir. Və netc_xmit_ntmp_cmd() yalnız istifadə olunan BD-lərin sayı NETC_CBDR_CLEAN_WORK (16) səviyyəsinə çatdıqda köhnə BD-ləri geri alır. Proqram təminatı BD-si düzgün DMA yaddaşının azad edilməsini təmin edir. Bununla, struct ntmp_dma_buf və ntmp_free_data_mem() artıq lazım olmadığı üçün silinmişdir. 3. Çağıranların netc_xmit_ntmp_cmd() boyunca ring_lock-u saxlaması tələb olunur netc_xmit_ntmp_cmd() çağıran tərəf cavabı istehlak etməyi bitirmədən əvvəl ring_lock-u azad edir. Bu nöqtədə, əgər paralel bir axın yeni əmr göndərirsə, o, ntmp_clean_cbdr()-i tetikləyə və DMA buferi hələ istifadədə olduğu halda onu azad edə bilər. Cavab buferinin vaxtından əvvəl geri alınmayacağına əmin olmaq üçün ring_lock mülkiyyəti çağıran tərəfə ötürülmüşdür. Buna görə də ntmp_select_and_lock_cbdr() və ntmp_unlock_cbdr() köməkçi funksiyaları əlavə edilmişdir. Bu dəyişikliklər DMA use-after-free şəraitini aradan qaldırır və BD-lərin təhlükəsiz və ardıcıl geri alınmasını, həmçinin DMA buferi həyat dövrünün idarə olunmasını təmin edir.
Necə düzəltmək olar
- linux linux_kernel6.18.33, 7.0.10 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 | 6.16 ≤ v < 6.18.33, 6.19 ≤ v < 7.0.10 | 6.18.33, 7.0.10 |
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.