CVE-2026-19940
Təsvir
subsys/bluetooth/host/classic/hfp_ag.c faylındakı Bluetooth Classic Hands-Free Profile Audio Gateway tətbiqi öz struct bt_hfp_ag obyektlərini ACL bağlantı indeksi ilə indekslənmiş statik hovuzda saxlayır. Bağlantının kəsilməsi zamanı hfp_ag_disconnected() funksiyası ag->tx_work və zəngə aid iş elementlərini ləğv edir, daha sonra ag->acl_conn dəyişənini sıfırlayaraq hovuz slotunu boş kimi qeyd edir — lakin ag->ongoing_call_work (və ag->slc_work) toxunulmaz qalır. Eyni slota düşən növbəti bağlantı hfp_ag_create() funksiyasına daxil olur; bu funksiyanın yeganə məşğulluq testi ag->acl_conn-dur və o, dərhal memset(ag, 0, sizeof(struct bt_hfp_ag)), ardınca isə k_work_init_delayable() funksiyasını icra edir. Struct _timeout düyünü hələ də nüvənin vaxtaşımı siyahısına bağlı olan bir k_work_delayable elementinin sıfırlanması və yenidən başladılması, nüvənin NULL prev/next keçidlərinə malik düyünə istinad saxlamasına səbəb olur. ag->ongoing_call_work uzaq tərəf tərəfindən aktivləşdirilir: Hands-Free qurğusu Xidmət Səviyyəsi Bağlantısının (Service Level Connection) qurulması zamanı AT+CIND? göndərdikdə və tətbiq asinxron get_ongoing_call geri çağırışını təmin etdikdə, AG CONFIG_BT_HFP_AG_GET_ONGOING_CALL_TIMEOUT millisaniyələr (defolt olaraq 10000) üçün işi planlaşdırır. Taymer yalnız tətbiqin bt_hfp_ag_ongoing_calls() vasitəsilə vaxtında cavab verməsi halında ləğv edilir. AT+CIND? göndərən, sonra HFP RFCOMM DLC bağlantısını kəsən və dərhal eyni ACL linkində onu yenidən açan qarşı tərəf, vaxtaşımı hələ gözlənilərkən deterministik şəkildə eyni hovuz slotundan istifadə edir — AG-nin RFCOMM server qəbul yolu (hfp_ag_accept()) birbaşa hfp_ag_create() funksiyasını çağırır, beləliklə, uzaq tərəf həm ləğv prosesini, həm də yenidən yaradılmanı idarə edir. Nəticədə nüvənin vaxtaşımı siyahısı korlanır: sıfırlanmış düyün üzərində sys_dlist_remove() funksiyası saat bildirişi yolundan NULL göstəriciləri vasitəsilə yazma əməliyyatları yerinə yetirir və yenidən başladılmış işin yenidən planlaşdırılması siyahıda artıq istinadı olan düyünü yenidən daxil edərək dövr yaradır; bildiriş dövrü isə kəsilmələr kilidlənmiş halda bu dövrdə hərəkət edir. Gözlənilən təsir bütün sistemin xətası və ya donmasıdır, yəni Bluetooth radio diapazonundan əlçatan olan xidmətdən imtina (DoS) halıdır; hücumçu tərəfindən idarə olunan heç bir məlumat yazılmadığı üçün bu, təkbaşına kodun icrasına gətirib çıxarmır. Risk yalnız CONFIG_BT_HFP_AG (eksperimental kimi qeyd edilmiş və defolt olaraq söndürülmüş) konfiqurasiyası ilə yığılan və tətbiqi asinxron get_ongoing_call geri çağırışını həyata keçirən versiyalarla məhdudlaşır.
Necə düzəltmək olar
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| zephyrproject zephyr | 4.2.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.
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.