Saltar al contenido
DUPIN
ALERTAS · EN VIVO
Contacto

VULNERABILIDADDetectada 03 NOV · 12:15

CVE-2026-85034 Escritura fuera de límites en el cliente GATT de Bluetooth por notificaciones sobredimensionadas

El cliente GATT del host de Bluetooth entregaba el valor de notificaciones e indicaciones recibidas a los callbacks de bt_gatt_subscribe_params::notify usando solo la longitud derivada del PDU ATT recibido. bt_att_recv() valida solo una longitud mínima y no aplica el MTU ATT negociado, y el canal L2CAP ATT fijo tampoco aplica control de rx.mtu, por lo que el único límite era el búfer de reensamblado ACL. Valores mayores a los 512 octetos máximos de atributo podían entregarse a suscriptores que dimensionan sus…

6.7MEDIA

CVSS 3.1

  • Probabilidad de explotación · EPSS del 09/110,2 % · percentil 15
  • Explotada activamenteNo confirmada
  • Exploit públicoNo conocido

Afectados

  • zephyrproject zephyr

    desde 3.4.0 hasta antes de 4.3.2desde 4.4.0 hasta antes de 4.5.0

Qué hacer

  1. Verificá si usás zephyr y en qué versión.
  2. Actualizá a la versión corregida que indique el fabricante en su aviso o aplicá su mitigación.
  3. Revisá registros y accesos de los sistemas expuestos para descartar un uso previo.

Calculadora CVSS

CVSS 3.1 · 6.7 MEDIA

CVSS:3.1/AV:A/AC:H/PR:L/UI:N/S:U/C:L/I:H/A:H

  • Vector de ataqueRed adyacente
  • Complejidad del ataqueAlta
  • Privilegios requeridosBajos
  • Interacción del usuarioNinguna
  • AlcanceSin cambio
  • ConfidencialidadBaja
  • IntegridadAlta
  • DisponibilidadAlta

Descripción original

The Bluetooth host's GATT client passed the value of a received Handle Value Notification, Handle Value Indication or Multiple Handle Value Notification to bt_gatt_subscribe_params::notify callbacks using only the length derived from the received ATT PDU. bt_att_recv() in subsys/bluetooth/host/att.c validates only a minimum PDU length and does not enforce the negotiated ATT MTU, and the fixed ATT L2CAP channel in subsys/bluetooth/host/l2cap.c applies no rx.mtu check either, so the only ceiling was the ACL reassembly buffer CONFIG_BT_BUF_ACL_RX_SIZE. Values longer than the 512-octet maximum attribute length defined by the Bluetooth Core Specification (Vol 3, Part F, Section 3.2.9) could therefore be handed to subscribers that size their buffers to that documented limit. A remote peer that a device has connected and subscribed to — a malicious, spoofed or compromised GATT server within radio range — triggers the flaw by sending a notification or indication whose value exceeds 512 octets on a subscribed handle. In the LE Audio unicast client this reaches a concrete out-of-bounds write: unicast_client_ep_notify() in subsys/bluetooth/audio/bap_unicast_client.c copies the notification into the 512-byte att_buf of struct unicast_client with net_buf_simple_add_mem() and no tailroom check whenever length equals bt_audio_get_max_ntf_size(), i.e. the negotiated ATT MTU minus three. notify_handler() in subsys/bluetooth/audio/bap_broadcast_assistant.c has the same shape. Reaching the overflow requires a build whose ATT MTU exceeds 515 octets (CONFIG_BT_L2CAP_TX_MTU and CONFIG_BT_BUF_ACL_RX_SIZE set for full-length attribute support); the shipped defaults are far smaller. The overflow writes peer-controlled bytes past att_buf directly over the adjacent struct net_buf_simple net_buf — its data, __buf, len and size fields — which the subsequent long-read accumulation then uses as its destination, turning a small linear overflow into a controlled write. net_buf_simple_add() only asserts on insufficient tailroom unless CONFIG_NET_BUF_HARDENING is enabled, and that option is disabled by default, so ordinary production builds perform the copy. Beyond the in-tree LE Audio clients, any application subscriber that sized its receive buffer to the specification's 512-octet limit was exposed to the same overflow. The fix rejects notification, indication and multiple-notification values longer than BT_ATT_MAX_ATTRIBUTE_LEN in call_notify_cb_and_maybe_unsubscribe() in subsys/bluetooth/host/gatt.c before any subscriber callback is invoked, so no subscriber can be handed more than the specified maximum. Remaining tuples of a multiple handle value notification are still delivered and oversized indications are still confirmed.

Referencias (2)

Resumen traducido automáticamente de la descripción original. Fuente: Nureq Monitor. Cómo funciona.

DUPIN · CONTACTO

Contanos tu caso

El mensaje ya va armado: podés cambiarlo.

También podés escribir a [email protected]. Usamos tus datos solo para responderte.