← Back to CVE Explorer

CVE-2026-10660

Full vulnerability record from the local CVENow database.

Description

The Bluetooth BAP Broadcast Assistant GATT client in subsys/bluetooth/audio/bap_broadcast_assistant.c reassembled remote Broadcast Receive State data into a single file-static net_buf_simple (att_buf, BT_ATT_MAX_ATTRIBUTE_LEN = 512 bytes) shared by all connection instances, while the BUSY flag, long-read handle, and reset/offset state were per-connection. When the device acts as a Broadcast Assistant connected to multiple Scan Delegator peripherals, notification and long-read callbacks from different connections interleave on the shared buffer: the append in notify_handler (net_buf_simple_add_mem at the not-busy branch) performs no tailroom check, so receive-state notifications from two or more delegators accumulate on the same 512-byte buffer and, with a sufficiently large configured ATT MTU (BT_L2CAP_TX_MTU up to 2000) and two-to-three concurrent connections, write past the buffer into adjacent .bss (net_buf_simple_add only asserts in debug builds). Even below the overflow threshold, one connection's net_buf_simple_reset zeroes the shared length while another connection's reassembly and GATT read offset are in flight, mixing one peer's data into another's parse. A malicious or compromised Scan Delegator (or two colluding peers) over BLE can trigger this, causing out-of-bounds writes (memory corruption / denial of service) and cross-connection data corruption. The fix moves the buffer into the per-connection instance struct so each connection reassembles into its own buffer. Affects Zephyr releases shipping the Broadcast Assistant with the shared buffer, including v4.4.0 and earlier.

Severity
MEDIUM
CVSS score
6.4 (v3.1)
Vulnerability status
Awaiting Analysis
Source identifier
Published
2026-07-11 17:16:23.920000
Last modified
2026-10-25 15:10:00.147000
View original CVE JSON
{
  "id": "CVE-2026-10660",
  "sourceIdentifier": "[email protected]",
  "published": "2026-07-11T17:16:23.920",
  "lastModified": "2026-10-25T15:10:00.147",
  "vulnStatus": "Awaiting Analysis",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "The Bluetooth BAP Broadcast Assistant GATT client in subsys/bluetooth/audio/bap_broadcast_assistant.c reassembled remote Broadcast Receive State data into a single file-static net_buf_simple (att_buf, BT_ATT_MAX_ATTRIBUTE_LEN = 512 bytes) shared by all connection instances, while the BUSY flag, long-read handle, and reset/offset state were per-connection.\n\nWhen the device acts as a Broadcast Assistant connected to multiple Scan Delegator peripherals, notification and long-read callbacks from different connections interleave on the shared buffer: the append in notify_handler (net_buf_simple_add_mem at the not-busy branch) performs no tailroom check, so receive-state notifications from two or more delegators accumulate on the same 512-byte buffer and, with a sufficiently large configured ATT MTU (BT_L2CAP_TX_MTU up to 2000) and two-to-three concurrent connections, write past the buffer into adjacent .bss (net_buf_simple_add only asserts in debug builds).\n\nEven below the overflow threshold, one connection's net_buf_simple_reset zeroes the shared length while another connection's reassembly and GATT read offset are in flight, mixing one peer's data into another's parse. A malicious or compromised Scan Delegator (or two colluding peers) over BLE can trigger this, causing out-of-bounds writes (memory corruption / denial of service) and cross-connection data corruption.\n\nThe fix moves the buffer into the per-connection instance struct so each connection reassembles into its own buffer. Affects Zephyr releases shipping the Broadcast Assistant with the shared buffer, including v4.4.0 and earlier."
    },
    {
      "lang": "es",
      "value": "El cliente GATT Bluetooth BAP Broadcast Assistant en subsys/bluetooth/audio/bap_broadcast_assistant.c reensambló datos remotos de Broadcast Receive State en un único net_buf_simple estático de archivo (att_buf, BT_ATT_MAX_ATTRIBUTE_LEN = 512 bytes) compartido por todas las instancias de conexión, mientras que el indicador BUSY, el manejador de lectura larga y el estado de reinicio/desplazamiento eran por conexión.\n\nCuando el dispositivo actúa como un Broadcast Assistant conectado a múltiples periféricos Scan Delegator, las devoluciones de llamada de notificación y lectura larga de diferentes conexiones se entrelazan en el búfer compartido: la adición en notify_handler (net_buf_simple_add_mem en la rama no ocupada) no realiza ninguna comprobación de espacio restante, por lo que las notificaciones de estado de recepción de dos o más delegadores se acumulan en el mismo búfer de 512 bytes y, con una MTU ATT configurada suficientemente grande (BT_L2CAP_TX_MTU hasta 2000) y de dos a tres conexiones concurrentes, escriben más allá del búfer en el .bss adyacente (net_buf_simple_add solo se afirma en compilaciones de depuración).\n\nIncluso por debajo del umbral de desbordamiento, el net_buf_simple_reset de una conexión pone a cero la longitud compartida mientras que el reensamblaje y el desplazamiento de lectura GATT de otra conexión están en curso, mezclando los datos de un par en el análisis de otro. Un Scan Delegator malicioso o comprometido (o dos pares en colusión) a través de BLE puede desencadenar esto, causando escrituras fuera de límites (corrupción de memoria / denegación de servicio) y corrupción de datos entre conexiones.\n\nLa solución mueve el búfer a la estructura de instancia por conexión para que cada conexión reensamble en su propio búfer. Afecta a las versiones de Zephyr que distribuyen el Broadcast Assistant con el búfer compartido, incluyendo la v4.4.0 y anteriores."
    }
  ],
  "affected": [
    {
      "source": "[email protected]",
      "affectedData": [
        {
          "vendor": "zephyrproject",
          "product": "zephyr",
          "defaultStatus": "unaffected",
          "collectionURL": "https://github.com/zephyrproject-rtos/zephyr",
          "packageName": "zephyr",
          "programFiles": [
            "subsys/bluetooth/audio/bap_broadcast_assistant.c"
          ],
          "versions": [
            {
              "version": "3.6.0",
              "lessThan": "4.3.1",
              "versionType": "semver",
              "status": "affected"
            },
            {
              "version": "4.4.0",
              "lessThan": "4.4.2",
              "versionType": "semver",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "[email protected]",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:H",
          "baseScore": 6.4,
          "baseSeverity": "MEDIUM",
          "attackVector": "ADJACENT_NETWORK",
          "attackComplexity": "HIGH",
          "privilegesRequired": "NONE",
          "userInteraction": "NONE",
          "scope": "UNCHANGED",
          "confidentialityImpact": "LOW",
          "integrityImpact": "LOW",
          "availabilityImpact": "HIGH"
        },
        "exploitabilityScore": 1.6,
        "impactScore": 4.7
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-07-13T15:44:09.257224Z",
          "id": "CVE-2026-10660",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "[email protected]",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-787"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/zephyrproject-rtos/zephyr/commit/0cd61589ff820b6a585c73cb36f1e14b043a2795",
      "source": "[email protected]"
    },
    {
      "url": "https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-73c7-3rh7-v5p9",
      "source": "[email protected]"
    }
  ]
}