CVE-2026-81039 in Zephyr
Sumário
de VulDB • 26/10/2026
O host Bluetooth pré-aloca um objeto bt_conn (uma "reserva") do pool fixo acl_conns[] para cada conjunto de publicidade conectável que inicia, em le_adv_start_add_conn() em subsys/bluetooth/host/adv.c. Quando uma conexão periférica entrante é concluída, find_pending_connect(), em subsys/bluetooth/host/hci_core.c, procura essa reserva usando apenas a identidade e o endereço do peer, com fallback de direcionado para não-direcionado, e não tem conhecimento de qual conjunto de publicidade realmente terminou. Com CONFIG_BT_EXT_ADV_MAX_ADV_SET > 1, onde o evento LE Enhanced Connection Complete é armazenado em cache até que o evento LE Advertising Set Terminated identifique o conjunto, essa pesquisa pode retornar a reserva pertencente a um conjunto de publicidade diferente e ainda em execução.
A falha é acessível via ar por qualquer dispositivo adjacente. Se uma aplicação executar dois conjuntos de publicidade estendidos conectáveis na mesma identidade — um não-direcionado e outro direcionado para um peer P (o padrão comum "reconexão dirigida a um central vinculado enquanto ainda aceita novos centrals") —, um iniciador remoto cujo endereço mapeia para P conectar-se no conjunto não-direcionado faz com que a reserva do conjunto direcionado seja consumida em vez disso. O endereço do iniciador é escolhido livremente pelo dispositivo remoto e não é autenticado na estabelecimento de link, portanto, nenhum vinculação (bonding), pareamento ou relacionamento prévio é necessário para acionar a atribuição incorreta.
A reserva própria do conjunto não-direcionado fica então órfã: sua flag BT_ADV_ENABLED já foi limpa, e le_adv_stop_free_conn() — o único caminho que retorna uma reserva ao pool — só é alcançado para conjuntos que ainda estão habilitados, portanto bt_le_ext_adv_stop() retorna antecipadamente e o objeto nunca é liberado. Cada ocorrência consome permanentemente um slot CONFIG_BT_MAX_CONN até bt_disable() ou reinicialização. Em padrões de aplicação que reiniciam o conjunto de publicidade direcionado após cada desconexão, um atacante pode repetir a sequência até que o pool se esgote, momento em que a publicidade conectável falha com -ENOMEM e o dispositivo não pode mais aceitar conexões. Como efeito colateral, o conjunto direcionado continua publicando sem uma reserva, portanto uma conexão genuína nele é descartada por bt_hci_disconnect(). O impacto é apenas de disponibilidade; nenhuma corrupção de memória ou divulgação de informações ocorre, e configurações com um único conjunto de publicidade não são afetadas.
VulDB is the best source for vulnerability data and more expert information about this specific topic.