CVE-2026-19938

Orta

Təsvir

Bluetooth host-unun ATT ötürmə yolu, imzalama uğursuz olduqda ona məxsus olmayan buferi azad edir. subsys/bluetooth/host/att.c faylındakı chan_send() funksiyasında sənədləşdirildiyi kimi (və digər bütün xəta çıxışlarında tətbiq olunduğu kimi), uğursuzluq zamanı çağırıcı net_buf mülkiyyətini saxlayır; lakin BT_ATT_OP_SIGNED_WRITE_CMD budağı bt_smp_sign() xəta qaytardıqda net_buf_unref(buf) funksiyasını çağırmış və sonra həmin xətanı çağırıcıya qaytarmışdır. Çağırıcılar müqaviləyə uyğun hərəkət edirlər: process_queue() buferi k_queue_prepend() ilə yenidən növbəyə əlavə edir, bt_att_chan_send_rsp() onu chan->tx_queue-ya geri qaytarır, bt_att_chan_req_send() onu sorğuya bərpa edir və att_req_retry() onun istinadını silir — beləliklə, artıq azad edilmiş bufer yenidən növbəyə əlavə edilir, daha sonra dereference olunur və nəticədə yenidən azad edilir. Tətbiq şifrələnməmiş bağlantıda sign parametrinə təyin edilmiş bt_gatt_write_without_response_cb() funksiyasını çağırdıqda ATT Signed Write Command istehsal olunur. Peer üçün lokal CSRK mövcud olmadıqda (-ENOENT), bt_smp_sign() uğursuz olur və bunun mövcudluğu peer ilə razılaşdırılır: smp_distribute_keys() lokal CSRK-nı yalnız peer-in cütləşmə açar-paylama sahəsi imzalama açarını tələb etdikdə və bonding razılaşdırıldıqda saxlayır. Buna görə də, peer CSRK-nı qəbul etmədən cütləşə bilər, No Bonding ilə cütləşə bilər, cütləşməmiş qala bilər və ya bağlantını şifrələnməmiş saxlaya bilər və qurbanın növbəti imzalı yazma əməliyyatı uğursuz yolla gedir. struct net_buf-un node sahəsi eyni zamanda ATT TX FIFO, att_tx_destroy() callback-i tərəfindən istifadə edilən gecikdirilmiş məhv siyahısı və pool-un boş siyahısı üçün əlaqə sözü olduğundan, yanlış idarə olunan bufer bu siyahıları korlayır və ATT TX yolu hələ də onu saxladığı halda bt_att_create_pdu() tərəfindən yeni bir PDU-ya yenidən təyin edilə bilər. Həmin budaq həmçinin net_buf_simple_state-ni yalnız imzalama prosesindən sonra saxlamışdır, buna görə də bt_l2cap_send_pdu() uğursuzluğundan sonra bərpa olunan bufer özünün 12-oktetlik imzasını saxlamışdır; sonrakı təkrar cəhd onu yenidən imzalamış və net_buf_add(buf, 12) vasitəsilə bt_att_create_pdu()-nun tam olaraq biri üçün ölçüləndirdiyi buferə ikinci imzanı əlavə etmişdir ki, bu da net_buf tailroom assertion-nın kompilyasiya olunmadığı versiyalarda pool-lanmış buferin sonundan kənara yazıya səbəb olmuşdur. Təsir Bluetooth stekində host tərəfli yaddaş korlanmasıdır: siyahının korlanması, iki sahibi olan pool-lanmış ATT buferi (yanlış PDU məzmunlarının ötürülməsi və ya bağlantı kəsildikdə növbələr boşaldılarkən double free) və təkrar cəhd yolunda məhdud out-of-bounds yazma — adətən sistemin çökməsi və ya assertion xətası kimi müşahidə olunur. Risk üçün köhnəlmiş CONFIG_BT_SIGNING parametrinin aktiv olması və faktiki olaraq imzalı yazmalar yerinə yetirən tətbiqin olması tələb olunur; bu konfiqurasiyada tetikləyici şərt uzaqdakı peer-in nəzarətindədir.

CiddilikOrta
CVSS5.9
İstismar ehtimalı—
MəhsulZephyr
Dərc13 okt 2026
İlk görülmə13 okt 2026

Necə düzəltmək olar

Yeniləyin
  • zephyrproject zephyr4.5.0 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
zephyrproject zephyr2.3.0 ≤ v < 4.5.04.5.0

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.