CVE-2026-19940
Açıklama
subsys/bluetooth/host/classic/hfp_ag.c dosyasındaki Bluetooth Classic Hands-Free Profile Audio Gateway uygulaması, struct bt_hfp_ag nesnelerini ACL bağlantı indeksi tarafından indekslenen statik bir havuzda tutmaktadır. Bağlantı sonlandırıldığında, hfp_ag_disconnected() fonksiyonu ag->tx_work ve çağrı başına düşen çalışma öğelerini iptal eder ve ardından ag->acl_conn değerini temizleyerek havuz yuvasını boş olarak işaretler; ancak ag->ongoing_call_work (ve ag->slc_work) öğelerine dokunmaz. Aynı yuvaya yerleşen bir sonraki bağlantı, tek doluluk testi ag->acl_conn olan hfp_ag_create() fonksiyonuna girer ve hemen önce memset(ag, 0, sizeof(struct bt_hfp_ag)), ardından k_work_init_delayable() işlemini yürütür. struct _timeout düğümü hala çekirdek zaman aşımı listesine bağlı olan bir k_work_delayable yapısının sıfırlanması ve yeniden başlatılması, çekirdeğin NULL öncekine/sonrakine bağlantıları olan bir düğüme referans tutmasına neden olur. ag->ongoing_call_work, uzak eş tarafından kurulur: Bir Hands-Free ünitesi, Service Level Connection kurulumu sırasında AT+CIND? gönderdiğinde ve uygulama asenkron get_ongoing_call geri çağırmasını sağladığında, AG, CONFIG_BT_HFP_AG_GET_ONGOING_CALL_TIMEOUT milisaniye (varsayılan 10000) için çalışmayı planlar. Zamanlayıcı yalnızca uygulama bt_hfp_ag_ongoing_calls() aracılığıyla zamanında yanıt verirse iptal edilir. AT+CIND? gönderen, ardından HFP RFCOMM DLC bağlantısını kesen ve ardından aynı ACL bağlantısı üzerinde bunu hemen yeniden açan bir eş, zaman aşımı hala beklemedeyken aynı havuz yuvasını belirleyici bir şekilde yeniden kullanır; AG'nin RFCOMM sunucu kabul yolu (hfp_ag_accept()), doğrudan hfp_ag_create() fonksiyonunu çağırır, böylece uzak taraf hem sonlandırmayı hem de yeniden oluşturmayı yönetmiş olur. Bunun sonucu, çekirdeğin zaman aşımı listesinin bozulmasıdır: Sıfırlanan düğüm üzerindeki sys_dlist_remove(), saat duyuru yolu üzerinden NULL işaretçiler aracılığıyla yazma işlemleri gerçekleştirir ve yeniden başlatılan çalışmanın yeniden planlanması, listenin zaten referans verdiği bir düğümü tekrar ekleyerek, duyuru döngüsünün kesintiler kilitliyken ilerlediği bir döngü oluşturur. Gözlemlenebilir etki, tüm sistemin hata vermesi veya donmasıdır, yani Bluetooth radyo menzilinden erişilebilen bir hizmet reddi durumudur; saldırgan kontrollü herhangi bir veri yazılmadığı için bu durum tek başına kod çalıştırmaya izin vermez. Etkilenme durumu, CONFIG_BT_HFP_AG ile derlenen (deneysel olarak işaretlenmiş ve varsayılan olarak devre dışı bırakılmış) ve uygulaması asenkron get_ongoing_call geri çağırmasını gerçekleştiren sürümlerle sınırlıdır.
Nasıl düzeltilir
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| zephyrproject zephyr | 4.2.0 ≤ v ≤ 4.4.2 | — |
Sürümünüzü kontrol edin
Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.
Attack Surface Management
Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.