CVE-2026-19939

Orta

Təsvir

AVDTP siqnallaşma təbəqəsi, lokal cihaz hər dəfə AVDTP sorğusu göndərdikdə avdtp_send_cmd() funksiyasında 6 saniyəlik komanda vaxt aşımını (AVDTP_TIMEOUT) aktivləşdirir. subsys/bluetooth/host/classic/avdtp.c faylındakı hər bir cavab idarəedicisi gözlənilən sorğunu təmizləməzdən əvvəl session->timeout_work elementini ləğv edir, lakin bt_avdtp_l2cap_disconnected() yalnız session->req elementini təmizləmiş və gecikdirilə bilən işi (delayable work) aktiv saxlamışdır. struct bt_avdtp sessiyası, nümunələri statik hər bağlantı massivində yerləşən struct bt_a2dp strukturunun ilk üzvüdür və subsys/bluetooth/host/classic/a2dp.c faylındakı a2dp_get_connection() funksiyası session->br_chan.chan.conn NULL olduğu anda slotu memset() ilə silir — bu, L2CAP təbəqəsi tərəfindən bağlantının kəsilməsi geri çağırışı (callback) qaytdıqdan dərhal sonra həyata keçirilir. Uzaqdakı Bluetooth BR/EDR qarşı tərəfi AVDTP siqnallaşma kanalını açaraq, lokal tətbiqin AVDTP proseduru başlatmasına şərait yaradaraq (standart A2DP axını qoşulma geri çağırışından bt_a2dp_discover() funksiyasını başladır), daha sonra cavab vermədən siqnallaşma kanalını bağlayaraq və qalan vaxt aşımı pəncərəsi ərzində onu yenidən açaraq bu vəziyyəti tetikleyir. Yenidən qoşulma a2dp_accept() → a2dp_get_connection() funksiyalarına çatır və iş elementinin struct _timeout strukturu hələ də nüvənin qlobal vaxt aşımı siyahısına bağlı olduğu halda bütün struct bt_a2dp strukturunu sıfırlayır. Həm bağlantının kəsilməsi, həm də yenidən qoşulma anları hücumçu tərəfindən seçildiyi üçün heç bir yarış vəziyyətinə (race condition) ehtiyac yoxdur; şifrələnmiş BR/EDR bağlantısı tələb olunur və CONFIG_BT_A2DP (experimental) aktiv edilmiş olmalıdır. Default CONFIG_TIMEOUT_BACKEND_DLIST backend istifadə edildikdə, nüvə vaxt aşımının qeyri-aktiv olduğuna onun siyahı düyününün bağlı olub-olmadığını yoxlamaqla qərar verir, beləliklə memset()-dən sonra nüvə qlobal vaxt aşımı siyahısında hələ də olan düyünü boş kimi qəbul edir: bildiriş yolu (announce path) keçidləri və idarəedici göstəricisi NULL olan düyünü çıxarır və təkrar istifadə edilmiş sessiya üzərindəki növbəti bt_work_reschedule() eyni düyünü artıq özündə olduğu siyahıya yenidən daxil edir. Bunun nəticəsi hər bir taymerin, zaman diliminin və yuxu rejiminə asılı olduğu vahid nüvə məlumat strukturunun korlanmasıdır — sıfırlanmış və ya köhnəlmiş siyahı göstəriciləri vasitəsilə yazmalar və NULL idarəedici dispetçeri sistem səviyyəsində çökməyə və ya donmaya səbəb olur ki, bu da yalnız A2DP sessiyası ilə məhdudlaşan bir xəta deyil. Həll yolu bt_avdtp_l2cap_disconnected() funksiyasının başında session->timeout_work elementini ləğv etmək və k_work_init_delayable() funksiyasını avdtp_send_cmd()-dən sessiyanın qurulması yolları olan bt_avdtp_connect() və bt_avdtp_l2cap_accept() funksiyalarına köçürməkdir, beləliklə, iş elementi bağlantının kəsilməsi geri çağırışı işə düşməzdən əvvəl həmişə başladılır.

CiddilikOrta
CVSS6.3
İstismar ehtimalı—
MəhsulZephyr
Dərc13 okt 2026
İlk görülmə13 okt 2026
Zəiflik növüCWE-825CWE-825

Necə düzəltmək olar

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
zephyrproject zephyr3.7.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-19939 · Zephyr · Dark Radar