CVE-2026-74489
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: wifi: mac80211: BA sessiyasının dayandırılması zamanı tid_tx üçün use-after-free xətası düzəldildi ieee80211_stop_tx_ba_cb() funksiyası ieee80211_remove_tid_tx() vasitəsilə tid_tx-i kfree_rcu()-ya ötürür və sonra sta->lock kilidini buraxdıqdan sonra tid_tx->ndp dəyərini oxuyur: ieee80211_remove_tid_tx(sta, tid); /* kfree_rcu(tid_tx, rcu_head) */ ... spin_unlock_bh(&sta->lock); if (start_txq) ieee80211_agg_start_txq(sta, tid, false); if (send_delba) ieee80211_send_delba(..., tid_tx->ndp); Həmin oxuma əməliyyatı RCU oxuma tərəfli kritik bölmə ilə qorunmur və preemtible proses kontekstində işləyir: hər iki çağırıcı wiphy mutex-ni saxlayır və ora ya ieee80211_ba_session_work() wiphy işindən, ya da stansiyanın ləğvi zamanı ieee80211_sta_tear_down_BA_sessions() funksiyasından çatır. Softirqlər də həmin pəncərədə işləyə bilər — həm ieee80211_agg_start_txq() funksiyasını bitirən local_bh_enable()-dan, həm də istənilən interrupt çıxışından, buna görə də RCU callback-i oxuma əməliyyatından əvvəl tid_tx-i azad edə bilər. Lütfən, grace period-u həmin pəncərəyə məcburi yönləndirən test modulu ilə funksiya işə salındıqda, KASAN oxuma əməliyyatını bildirir və azad etmə adi RCU softirq yolu ilə baş verir: BUG: KASAN: slab-use-after-free in ieee80211_stop_tx_ba_cb+0x3cd/0x400 Read of size 1 at addr ffff888002b9f52e by task kworker/0:1/10 [...] Freed by task 57: __kasan_slab_free+0x47/0x70 __rcu_free_sheaf_prepare+0x70/0x250 rcu_free_sheaf_nobarn+0x18/0x40 rcu_core+0x426/0x1310 handle_softirqs+0x144/0x590 __irq_exit_rcu+0xea/0x150 irq_exit_rcu+0x9/0x20 sysvec_apic_timer_interrupt+0x6b/0x80 asm_sysvec_apic_timer_interrupt+0x1a/0x20 send_delba yalnız tx_stop təyin edildikdə qurulur ki, bu da yalnız AGG_STOP_LOCAL_REQUEST üçün baş verir, beləliklə bura lokal ləğv zamanı (sessiyanın boş qalma vaxtının dolması, PTK yenilənməsi, suspend, HW rekonfiqurasiyası) çatılır və peer-in DELBA-sından gəlmir. Sessiya azad edilməzdən əvvəl, sta->lock hələ saxlanılarkən ndp-ni lokal dəyişənə oxuyun. tid_tx->ndp-nin tək bir yazıcısı var, o da ieee80211_tx_ba_session_handle_start() funksiyasıdır və burada eyni vaxtda işləyə bilməz: hər iki yol wiphy mutex tərəfindən seriyallaşdırılır və sessiya artıq bu nöqtədə HT_AGG_STATE_STOPPING kimi qeyd edilmişdir. Həmçinin, tid_tx->ndp bu funksiyada ieee80211_remove_tid_tx()-dən sonra qalan yeganə tid_tx istinadıdır. [şərhi yalnız ndp haqqında olmamaq üçün bir az daha ümumiləşdirin/dəyişin, ndp-ni birbaşa başlatın]
Necə düzəltmək olar
- Linux Linux09fc36eec7841cdf732f4db39855e0c73bd075cc, 2f067f5a450ea07efd249142a11d940a068fe29c və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| Linux Linux | 98acd4c1d9f7dc9c426e840c16e81b57315ff84b ≤ v < 09fc36eec7841cdf732f4db39855e0c73bd075cc, 98acd4c1d9f7dc9c426e840c16e81b57315ff84b ≤ v < 2f067f5a450ea07efd249142a11d940a068fe29c, 7.1 | 09fc36eec7841cdf732f4db39855e0c73bd075cc, 2f067f5a450ea07efd249142a11d940a068fe29c |
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.