CVE-2025-39863

Yüksək

Təsvir

Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: wifi: brcmfmac: brcmf_btcoex_info işi yenidən planlaşdırılarkən yaranan use-after-free xətasının düzəldilməsi brcmf_btcoex_detach() funksiyası btcoex taymerini yalnız timer_on bayrağı false olduqda söndürür. Lakin taymer idarəçisi kimi çalışan brcmf_btcoex_timerfunc() funksiyası timer_on dəyişənini false olaraq təyin edir. Bu, kritik yarış şəraitləri (race conditions) yaradır: 1. Əgər brcmf_btcoex_timerfunc() icra olunarkən brcmf_btcoex_detach() çağırılarsa, o, timer_on dəyişənini false görə bilər və timer_shutdown_sync() çağırışını ötürə bilər. 2. Daha sonra brcmf_btcoex_timerfunc(), cancel_work_sync() icra edildikdən sonra brcmf_btcoex_info işçisini (worker) yenidən planlaşdıra bilər ki, bu da use-after-free xətalarına səbəb olur. Use-after-free xətaları, brcmf_btcoex_info strukturunun azad edilmə vaxtının onun işçi axınının (worker thread) icrasına nisbəti ilə bağlı iki fərqli ssenaridə baş verir. Ssenari 1: İşçi planlaşdırılmazdan əvvəl azad edilir brcmf_btcoex_info işçi planlaşdırılmamışdan əvvəl yaddaşdan silinir. Hədəf yaddaş azad edildikdən sonra schedule_work(&bt_local->work) çağırıldıqda yarış şəraiti yarana bilər. Hadisələrin ardıcıllığı aşağıda detallandırılıb: CPU0 | CPU1 brcmf_btcoex_detach | brcmf_btcoex_timerfunc | bt_local->timer_on = false; if (cfg->btcoex->timer_on) | ... | cancel_work_sync(); | ... | kfree(cfg->btcoex); // FREE | | schedule_work(&bt_local->work); // USE Ssenari 2: İşçi planlaşdırıldıqdan sonra azad edilir brcmf_btcoex_info işçi planlaşdırıldıqdan sonra, lakin onun icrasından əvvəl və ya icrası zamanı azad edilir. Bu halda, brcmf_btcoex_handler() daxilindəki ifadələr — məsələn, container_of makrosu və növbəti brcmf_btcoex_info obyektinin istinadları use-after-free girişinə səbəb olacaqdır. Aşağıdakı zaman qrafiki bu ssenarini nümayiş etdirir: CPU0 | CPU1 brcmf_btcoex_detach | brcmf_btcoex_timerfunc | bt_local->timer_on = false; if (cfg->btcoex->timer_on) | ... | cancel_work_sync(); | ... | schedule_work(); // Reschedule | kfree(cfg->btcoex); // FREE | brcmf_btcoex_handler() // Worker /* | btci = container_of(....); // USE Yuxarıdakı kfree() həmçinin | ... işçinin icrası zamanı | btci-> // USE hər hansı bir anda baş verə | bilər | */ | Yarış şəraitlərini həll etmək üçün şərt yoxlamasını ləğv edin və timer_shutdown_sync() funksiyasını birbaşa çağırın. O, cari vəziyyətindən asılı olmayaraq taymeri etibarlı şəkildə deaktiv edə bilər. Dayandırıldıqdan sonra timer_on vəziyyəti false olaraq təyin edilir.

CiddilikYüksək
CVSS7.8
İstismar ehtimalı—
MəhsulLinux Kernel
Dərc19 sen 2025
İlk görülmə19 sen 2025

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel6.6.105, 6.12.46, 6.16.6 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
linux linux_kernel3.10 ≤ v < 6.6.105, 6.7 ≤ v < 6.12.46, 6.13 ≤ v < 6.16.6, 6.176.6.105, 6.12.46, 6.16.6

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.

Intelligence 360 paketində

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.

CVE-2025-39863 · Linux Kernel · Dark Radar