CVE-2026-19935

Yüksək

Təsvir

Bluetooth LE hostu, kanal dinamik PSM (0x0080-0x00FF) istifadə etdikdə, qəbul edilmiş L2CAP bağlantı yönümlü kanal (CoC) məlumatlarını kanal obyektinə daxil edilmiş struct k_work (le_chan->rx_work, handler l2cap_rx_process()) vasitəsilə gecikdirilmiş emal üçün növbəyə düzür. subsys/bluetooth/host/l2cap.c faylındakı l2cap_chan_destroy() funksiyasındakı kanalın sökülməsi prosesi yenidən ötürmə vaxtı keçmə işini ləğv edir və RX FIFO-nu boşaldır, lakin rx_work-u heç vaxt ləğv etmir. Həmin iş elementi sistem iş növbəsinə göndərildiyi halda, HCI qəbul emalı xüsusi Bluetooth RX iş növbəsində (standart olaraq CONFIG_BT_RECV_WORKQ_BT) icra edildiyi üçün, növbədə gözləyən rx_work elementi göstərdiyi kanaldan daha uzun müddət mövcud qala bilər. Qurulmuş CoC kanalı olan uzaqdakı, autentifikasiya olunmamış tərəf, dərhal ardınca L2CAP Disconnect Request göndərməklə bir data K-frame göndərərək bunu tətikləyir. K-frame rx_work-u sistem iş növbəsinə göndərir; hər iki iş növbəsi axını kooperativ olduğu və Bluetooth RX iş növbəsi daha yüksək prioritetlə (K_PRIO_COOP(CONFIG_BT_RX_PRIO) qarşılaşdırılıb CONFIG_SYSTEM_WORKQUEUE_PRIORITY ilə) işlədiyi üçün, gözləyən element növbəti Disconnect Request le_disconn_req() -> l2cap_chan_del() -> l2cap_chan_destroy() funksiyalarında emal edilməzdən əvvəl icra oluna bilmir. Daha sonra stek released() geri çağırışını (callback) tetikləyir ki, API sənədləri bunu stekin bütün istinadları atdığı və tətbiqin kanal yaddaşını azad edə biləcəyi kimi qeyd edir. Buna görə də tətbiq, sistem iş növbəsinin hələ də gözləmə siyahısında saxladığı obyekti azad edir və ya yenidən qəbul edir. Əgər yaddaş azad edilib yenidən ayrılarsa, iş növbəsi daha sonra yenidən istifadə edilmiş yaddaşdan oxunan siyahı düyününü və handler funksiya göstəricisini dereference edir; əgər obyekt sonrakı bağlantı üçün yenidən istifadə edilərsə, l2cap_chan_add() hələ də növbədə olan iş elementi üzərində k_work_init() çağırır, bu da iş növbəsinin gözləmə siyahısını korlayır, nəticədə əlaqəsiz iş elementləri atılır və ya növbə dövrvi siyahıda ilişib qalır. Bununla bağlı digər bir variant l2cap_rx_process()-in sökülmə prosesi ilə eyni vaxtda işləməsinə şərait yaradır, burada le_chan->_sdu-nun net_buf unref prosesi və chan->conn-un təmizlənməsi arasında yarış (race condition) baş verir. Düzəliş, kanal RX işini — hər bir sökülmə yolunun icra olunduğu eyni kontekst olan — Bluetooth iş növbəsinə yönləndirir və l2cap_chan_destroy() funksiyasına le_chan->rx_work üçün açıq şəkildə k_work_cancel() əlavə edir, beləliklə, released() geri çağırışından sonra kanala heç bir istinad qalmır. CONFIG_BT_L2CAP_DYNAMIC_CHANNEL konfiqurasiyası olmayan və ya yalnız daxili qəbul yolunu izləyən SIG tərəfindən təyin edilmiş PSM-lərdən (EATT 0x0027, OTS 0x0025) istifadə edən sistemlər bundan təsirlənmir.

CiddilikYüksək
CVSS7.5
İstismar ehtimalı—
MəhsulZephyr
Dərc11 okt 2026
İlk görülmə11 okt 2026

Necə düzəltmək olar

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
zephyrproject zephyr2.0.0 ≤ v ≤ 4.4.2—

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-2026-19935 · Zephyr · Dark Radar