CVE-2025-71079
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: net: nfc: nfc_unregister_device və rfkill_fop_write arasındakı deadlock probleminin həlli device_lock və rfkill_global_mutex arasında kilidləmə ardıcıllığının tərs olması səbəbindən nfc_unregister_device() və rfkill_fop_write() arasında deadlock baş verə bilər. Problemli kilidləmə ardıcıllığı belədir: Thread A (rfkill_fop_write): rfkill_fop_write() mutex_lock(&rfkill_global_mutex) rfkill_set_block() nfc_rfkill_set_block() nfc_dev_down() device_lock(&dev->dev) <- device_lock gözləyir Thread B (nfc_unregister_device): nfc_unregister_device() device_lock(&dev->dev) rfkill_unregister() mutex_lock(&rfkill_global_mutex) <- rfkill_global_mutex gözləyir Bu, klassik ABBA deadlock ssenarisini yaradır. Bunu düzəltmək üçün rfkill_unregister() və rfkill_destroy() funksiyaları device_lock kritik bölməsindən kənara çıxarılıb. Kilidi buraxmazdan əvvəl rfkill göstəricisi lokal dəyişəndə saxlanılır, sonra isə device_lock buraxıldıqdan sonra rfkill_unregister() çağırılır. Bu dəyişiklik təhlükəsizdir, çünki rfkill_fop_write() rfkill geri çağırma funksiyalarını (callbacks) çağırarkən rfkill_global_mutex-i tutur və rfkill_unregister() təmizləmə prosesindən əvvəl yenə də rfkill_global_mutex-i əldə edir. Buna görə də, rfkill_unregister() davam edən hər hansı geri çağırmanın tamamlanmasını gözləyəcək və device_del() yalnız rfkill_unregister() geri döndükdən sonra çağırılacaq ki, bu da istifadə-dən-sonra-azad etmə (use-after-free) halının qarşısını alır. nfc_register_device()-də oxşar kilidləmə ardıcıllığı (rfkill_register vasitəsilə device_lock -> rfkill_global_mutex) təhlükəsizdir, çünki qeydiyyat zamanı cihaz hələ rfkill_list-də olmur, buna görə də bu cihaz üzərində eyni vaxtda heç bir rfkill əməliyyatı baş verməyə bilməz.
Necə düzəltmək olar
- linux linux_kernel4.5, 4.10, 4.15, 4.20, 5.5, 5.10.248, 5.15.198, 6.1.160, 6.6.120, 6.12.64, 6.18.4 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 | 4.4.293 ≤ v < 4.5, 4.9.291 ≤ v < 4.10, 4.14.256 ≤ v < 4.15, 4.19.218 ≤ v < 4.20, 5.4.162 ≤ v < 5.5, 5.10.82 ≤ v < 5.10.248, 5.15.5 ≤ v < 5.15.198, 5.16.1 ≤ v < 6.1.160, 6.2 ≤ v < 6.6.120, 6.7 ≤ v < 6.12.64, 6.13 ≤ v < 6.18.4, 5.16, 6.19 | 4.5, 4.10, 4.15, 4.20, 5.5, 5.10.248, 5.15.198, 6.1.160, 6.6.120, 6.12.64, 6.18.4 |
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.