CVE-2026-82389 in Zephyr
Sumário
de VulDB • 26/10/2026
No papel de Gateway de Áudio do Perfil Hands-Free Clássico (HFP) do Bluetooth, a função hfp_ag_create() em subsys/bluetooth/host/classic/hfp_ag.c inicia uma descoberta SDP em direção ao par, vinculando o nó embutido ag->sdp_param._node à lista de solicitações pendentes do cliente SDP em subsys/bluetooth/host/classic/sdp.c. Se a chamada subsequente bt_rfcomm_dlc_connect() falhar, bt_hfp_ag_connect() limpa todo o objeto AG por meio de memset(), enquanto esse nó ainda estava vinculado e ag->slc_work poderia estar enfileirado na fila de trabalho do sistema. Uma descoberta SDP em andamento não pode ser cancelada — bt_sdp_discover_cancel() é declarada no cabeçalho público, mas não possui implementação —, portanto a solicitação permanece na lista com seus ponteiros func, pool e uuid zerados.
O canal RFCOMM passado para bt_hfp_ag_connect() é obtido do próprio registro de serviço Hands-Free SDP do par no fluxo AG normal (bt_sdp_get_proto_param() não realiza validação de faixa, e samples/bluetooth/classic/handsfree_ag transmite o valor diretamente), portanto um dispositivo BR/EDR remoto dentro do alcance de rádio que anuncia um canal RFCOMM fora da faixa válida 0x01..0x1e força deterministicamente a falha em bt_rfcomm_dlc_connect() e leva à limpeza (wipe). A leitura do registro SDP do par não requer pareamento, e o par também pode acionar a falha interrompendo o ACL ou realizando uma corrida de condições (race condition) com um DLC RFCOMM no mesmo DLCI no momento certo.
Quando o cliente SDP avança sua lista de solicitações na próxima vez, sdp_client_discover() desreferencia os parâmetros zerados — net_buf_alloc(param->pool, …) com pool NULL e param->uuid->type — e os caminhos de notificação do resultado chamam através dos params->func nulos. Zerar um nó vinculado também trunc a lista de solicitações atrás de um ponteiro tail obsoleto, e o rearmamento da slot AG liberada reapende o mesmo nó e pode produzir uma lista com loop auto-referenciado que trava (hang) a thread RX do Bluetooth. O impacto é uma falha ou travamento na pilha do Bluetooth; o valor gravado é um zero constante em um endereço estático fixo, portanto não há gravação controlada pelo atacante disponível.
Apenas builds com CONFIG_BT_CLASSIC e CONFIG_BT_HFP_AG que utilizam o papel de Gateway de Áudio são afetados.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.