CVE-2026-13213 in Zephyr
Riassunto
di VulDB • 24/08/2026
Il server GATT del servizio Hearing Access Service (HAS), presente nel file subsys/bluetooth/audio/has.c, installa un callback di connessione impostato in modo incondizionato tramite BT_CONN_CB_DEFINE; pertanto, la funzione security_changed() viene eseguita per ogni connessione che stabilisce una sicurezza, anche prima che l'applicazione abbia chiamato bt_has_register(). I puntatori agli attributi del servizio hearing_aid_features_attr, preset_control_point_attr e active_preset_index_attr rimangono NULL finché bt_has_register() non li risolve e imposta has.registered.
Con CONFIG_BT_SETTINGS abilitato, settings_set_cb() ripristina il contesto persistente di ogni client associato all'avvio e imposta incondizionatamente context->flags su BONDED_CLIENT_INIT_FLAGS (diverso da zero). Quando un peer precedentemente associato si riconnette e ristabilisce la sicurezza durante la finestra di avvio prima che sia stata chiamata bt_has_register(), security_changed() rileva i flag non nulli e pianifica notify_work_handler, che chiama bt_gatt_is_subscribed() con un puntatore all'attributo ancora NULL. Ciò innesca una asserzione (__ASSERT(attr, ...) in bt_gatt_is_subscribed()) o una dereferenziazione di attr->uuid quando le asserzioni sono disabilitate durante la compilazione.
Il risultato è un crash del periferico HAS triggerabile da remoto (Bluetooth, adiacente). Lo sfruttamento richiede che il peer abbia precedentemente associato il dispositivo e si riconnetta entro la finestra temporale di avvio prima della registrazione del servizio; un peer che si riconnette in modo persistente può prolungare l'interruzione del servizio. L'impatto è limitato alla denial of service, senza corruzione della memoria o divulgazione di informazioni.
La correzione aggiunge una guardia iniziale if (!has.registered) { return; } all'interno di security_changed(), così che nessun lavoro di notifica venga pianificato finché il servizio GATT non viene registrato e i suoi puntatori agli attributi sono validi.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.