CVE-2026-85034 in Zephyrinformação

Sumário

de VulDB • 03/11/2026

O cliente GATT do host Bluetooth passou o valor de uma notificação Handle Value Notification recebida, indicação Handle Value Indication ou múltipla notificação Multiple Handle Value Notification para os callbacks notify em bt_gatt_subscribe_params utilizando apenas o comprimento derivado da PDU ATT recebida. A função bt_att_recv() em subsys/bluetooth/host/att.c valida apenas um comprimento mínimo de PDU e não impõe o MTU ATT negociado, e o canal L2CAP ATT fixo em subsys/bluetooth/host/l2cap.c também não aplica verificação do rx.mtu; portanto, a única limitação era o buffer de reassemblagem ACL CONFIG_BT_BUF_ACL_RX_SIZE. Valores com comprimento superior ao máximo de 512 octetos definido pela Especificação Central Bluetooth (Vol 3, Parte F, Seção 3.2.9) poderiam ser entregues aos assinantes que dimensionam seus buffers para esse limite documentado.

Um peer remoto conectado e inscrito pelo dispositivo — um servidor GATT malicioso, spoofed ou comprometido dentro do alcance de rádio — aciona a falha enviando uma notificação ou indicação cujo valor excede 512 octetos em um handle assinado. No cliente unicast LE Audio, isso resulta em uma gravação fora dos limites (out-of-bounds write) concreta: unicast_client_ep_notify() em subsys/bluetooth/audio/bap_unicast_client.c copia a notificação para o att_buf de 512 bytes da struct unicast_client com net_buf_simple_add_mem() e sem verificação do tailroom sempre que o comprimento é igual a bt_audio_get_max_ntf_size(), ou seja, o MTU ATT negociado menos três. notify_handler() em subsys/bluetooth/audio/bap_broadcast_assistant.c tem a mesma estrutura. Para alcançar o estouro de buffer (overflow), é necessária uma compilação cujo MTU ATT exceda 515 octetos (CONFIG_BT_L2CAP_TX_MTU e CONFIG_BT_BUF_ACL_RX_SIZE configurados para suporte a atributos de comprimento total); os padrões fornecidos são muito menores.

O overflow grava bytes controlados pelo peer além do att_buf, diretamente sobre a struct net_buf_simple adjacente net_buf — seus campos data, __buf, len e size — que o acúmulo subsequente de leitura longa utiliza como destino, transformando um pequeno linear overflow em uma escrita controlada. A função net_buf_simple_add() apenas verifica (asserts) insuficiência de tailroom a menos que CONFIG_NET_BUF_HARDENING esteja habilitado, e essa opção está desabilitada por padrão; portanto, compilações comuns de produção realizam a cópia. Além dos clientes LE Audio no repositório principal, qualquer assinante de aplicativo que dimensionou seu buffer de recebimento para o limite de 512 octetos da especificação estava exposto ao mesmo overflow.

A correção rejeita valores de notificação, indicação e múltipla-notificação com comprimento superior a BT_ATT_MAX_ATTRIBUTE_LEN na função call_notify_cb_and_maybe_unsubscribe() em subsys/bluetooth/host/gatt.c antes que qualquer callback do assinante seja invocado; portanto, nenhum assinante pode receber mais do que o máximo especificado. Os pares restantes de uma notificação múltipla handle value notification ainda são entregues e as indicações com tamanho excessivo (oversized indications) ainda são confirmadas.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Responsável

Zephyr

Reservar

02/09/2026

Divulgação

03/11/2026

Moderação

aceite

Entrada

VDB-430277

EPSS

0.00000

KEV

não

Atividades

muito baixo

Fontes

Do you want to use VulDB in your project?

Use the official API to access entries easily!