CVE-2026-18748
Təsvir
Bluetooth Classic A2DP hostu, bir baytlıq len sahəsi və sabit 8 baytlıq codec_ie[] massivindən ibarət olan struct bt_a2dp_codec_ie daxilində kodek İnformasiya Elementini (IE) saxlayır. AVDTP həmrası 8 baytdan uzun kodek IE göndərdikdə, subsys/bluetooth/host/classic/a2dp.c faylındakı a2dp_process_config_ind() funksiyası yalnız ilk 8 baytı kopyalayır, lakin hücumkeş tərəfindən seçilmiş tam uzunluğu len dəyişəninə təyin edir və daha sonra bu ziddiyyətli strukturu stream->codec_config vasitəsilə tətbiqin struct bt_a2dp_stream strukturunda saxlayır. bt_a2dp_get_config_cb() və bt_a2dp_set_config_cb() funksiyaları da eyni şəkildə kopyalananı kəsib çıxarmaqla, lakin uzunluğu saxlamaq modelinə malik idi. Sonrakı bütün istifadəçilər len dəyərinə etibar edir. Xüsusilə, gələn AVDTP GET_CONFIGURATION üçün cavabdeh olan a2dp_get_config_ind() funksiyası net_buf_add_mem(rsp_buf, &ep->stream->codec_config.codec_ie[0], ep->stream->codec_config.len) əmrini icra edir. Beləliklə, əvvəlcə həddindən artıq böyük kodek IE daşıyan SET_CONFIGURATION göndərən və sonra konfiqurasiyanı geri tələb edən cütlənmiş BR/EDR həmrası stekin 8 baytlıq massivin sonundan təxminən 245 bayta qədər oxumağa və onları cavabda ötürməyə səbəb olur. codec_config, struct bt_a2dp_stream strukturunun son üzvüdür, buna görə də oxuma prosesi tətbiqin stream obyekti ilə bitişik yaddaşa keçir. Eyni ziddiyyət config_req(), reconfig_req() və get_config_rsp() tətbiq callback-lərinə də ötürülür və burada len baytlarının standart memcpy() əməliyyatı növbəti sərhədləri aşan oxumaya (out-of-bounds read) səbəb olur. Həmin məlumat sızmasının baş verməsi üçün CONFIG_BT_CLASSIC ilə birlikdə CONFIG_BT_A2DP, cütləşməni tamamlamış AVDTP həmrası (AVDTP L2CAP kanalı BT_SECURITY_L2 tələb edir) və BT_A2DP_EP_INIT() vasitəsilə qeydiyyatdan keçmiş SBC olmayan kodek üçün lokal son nöqtə (BT_A2DP_MPEG1/BT_A2DP_MPEG2/BT_A2DP_ATRAC/BT_A2DP_VENDOR) lazımdır, çünki SBC budağı IE uzunluğunu artıq 4 baytla məhdudlaşdırır. bt_a2dp_get_config_cb() cavab yolu belə bir məhdudiyyətə malik deyil və yanlış uzunluğu istənilən tətbiqə ötürür. Sərhədləri aşan yazma (out-of-bounds write) mövcud deyil: net_buf tailroom yoxlaması təyinat yerini məhdudlaşdırır, buna görə də təsir yalnız bitişik RAM-ın məhdud bir bölgəsinin həmraya sızdırılması ilə məhdudlaşır. Düzəliş, sabit BT_A2DP_MAX_IE_LENGTH dəyərini konfiqurasiya edilə bilən CONFIG_BT_A2DP_CODEC_MAX_IE_LEN (defolt 8, diapazon 4–253) ilə əvəz edir, codec_ie[] ölçüsünü buna uyğun təyin edir və səssiz şəkildə kəsmək əvəzinə onu aşan hər hansı qəbul edilmiş IE-ni rədd edir, beləliklə len artıq etibarlı baytların sayını aşmayacaq.
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.3.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.