CVE-2026-19738

Estado: Pendiente de análisisMedia (6.5)—
Gravedad6.5Media · CVSS 3.1
Probabilidad de explotación0.10 %mayor que el 1 % de las CVE
Explotación activaNono figura en el catálogo de CISA
Exploit públicoNo conocidosin código público localizado

La implementación del Procedimiento de Control de Capa de Enlace Bluetooth (LLCP) para la creación de Flujo Isócrono Conectado (CIS) retiene un nodo RX (ctx->node_ref.rx, marcado NODE_RX_TYPE_RETAIN) para poder reutilizarlo posteriormente como notificación de host — en el periférico mientras se espera la respuesta del Host a un LL_CIS_REQ, y en el central durante toda la duración de una creación de CIS iniciada localmente. En subsys/bluetooth/controller/ll_sw/ull_llcp_cc.c, las rutas "PDU inválido recibido" de llcp_rp_cc_rx() y llcp_lp_cc_rx() terminaron la conexión y completaron el procedimiento sin liberar ese nodo retenido, rompiendo la invariante verificada en llcp_lr_check_done() y llcp_rr_check_done() y huérfano de la memoria del nodo.

Leer descripción completaMostrar menos

Un dispositivo homólogo dentro del rango de radio puede alcanzar esto con un solo PDU de Control LL extra en un enlace ACL sin autenticar ni cifrar. Contra un periférico, el atacante envía un LL_CIS_REQ válido y, antes de que el Host responda, cualquier PDU de Control LL no relacionado (por ejemplo LL_VERSION_IND), que ull_cp_rx() encamina al procedimiento remoto activo. Contra un central que realiza una creación de CIS, un periférico malicioso responde con LL_UNKNOWN_RSP para CIS_REQ, que se envía al procedimiento local activo. No se requiere emparejamiento, cifrado ni interacción del usuario; el código se compila cuando CONFIG_BT_CTLR_PERIPHERAL_ISO o CONFIG_BT_CTLR_CENTRAL_ISO está habilitado.

En compilaciones predeterminadas (CONFIG_BT_CTLR_ASSERT_DEBUG es predeterminado y) la afirmación de nodo retenido se dispara inmediatamente, produciendo un error fatal del controlador y, típicamente, un reinicio del sistema a partir de un PDU inyectado. Con las afirmaciones de desarrollo deshabilitadas, cada intento pierde permanentemente un nodo del pequeño grupo de notificación LL del controlador (LL_PDU_RX_CNT, 2 * CONFIG_BT_CTLR_LLCP_CONN) junto con su memq_link_t; repetir el ciclo conectar-atacar-reconectar agota el grupo, después del cual la asignación de notificación siempre falla, el control de flujo RX se estanca, y el LL_ASSERT_ERR() no deshabilitado en llcp_lp_cc_flush() falla. El impacto se limita a la disponibilidad — el nodo filtrado queda huérfano, nunca se reutiliza ni se libera dos veces — y la recuperación requiere un reinicio.

Traducción automática del texto original de NVD (en inglés).

CVSS

Puntuación base
6.5
Versión
3.1
Vector
CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Probabilidad de explotación (EPSS)

Probabilidad de explotación en los próximos 30 días
0.10 %
Percentil entre todas las CVEs puntuadas
1
Fecha de la puntuación
21/10/2026

EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).

Técnicas ATT&CK

Cómo se explota esta vulnerabilidad y qué consigue el atacante, en el lenguaje de MITRE ATT&CK.

AV:A (red adyacente) sin autenticación ni interacción → T1210. DoS por agotamiento de recursos (memory pool) tras inyectar PDUs; escalada a fatal error (reboot) en builds debug o stall RX en release.

Inferido por nuestro agente de análisis a partir de la descripción oficial, el vector CVSS y la CWE, y comprobado por un supervisor. Puede contener errores.

Mitigaciones ATT&CK que cubren estas técnicas

Tecnologías afectadas (1)

⚠ Inferidas por IA a partir de la descripción — NVD aún no ha analizado esta CVE; no son CPE verificados.

CWE

Referencias

Mostrar las 2 referencias

JSON original (NVD)

Mostrar
{
  "id": "CVE-2026-19738",
  "cveTags": [],
  "metrics": {
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "id": "CVE-2026-19738",
          "role": "CISA Coordinator",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "version": "2.0.3",
          "timestamp": "2026-10-16T15:49:12.012353Z"
        }
      }
    ],
    "cvssMetricV31": [
      {
        "type": "Secondary",
        "source": "vulnerabilities@zephyrproject.org",
        "cvssData": {
          "scope": "UNCHANGED",
          "version": "3.1",
          "baseScore": 6.5,
          "attackVector": "ADJACENT_NETWORK",
          "baseSeverity": "MEDIUM",
          "vectorString": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
          "integrityImpact": "NONE",
          "userInteraction": "NONE",
          "attackComplexity": "LOW",
          "availabilityImpact": "HIGH",
          "privilegesRequired": "NONE",
          "confidentialityImpact": "NONE"
        },
        "impactScore": 3.6,
        "exploitabilityScore": 2.8
      }
    ]
  },
  "affected": [
    {
      "source": "vulnerabilities@zephyrproject.org",
      "affectedData": [
        {
          "vendor": "zephyrproject",
          "product": "zephyr",
          "versions": [
            {
              "status": "affected",
              "version": "3.4.0",
              "lessThan": "4.5.0",
              "versionType": "semver"
            }
          ],
          "packageName": "zephyr",
          "programFiles": [
            "subsys/bluetooth/controller/ll_sw/ull_llcp_cc.c"
          ],
          "collectionURL": "https://github.com/zephyrproject-rtos/zephyr",
          "defaultStatus": "unaffected",
          "programRoutines": [
            {
              "name": "llcp_lp_cc_rx"
            },
            {
              "name": "llcp_rp_cc_rx"
            }
          ]
        }
      ]
    }
  ],
  "published": "2026-10-11T18:16:59.050",
  "references": [
    {
      "url": "https://github.com/zephyrproject-rtos/zephyr/commit/fde17f2c3de0118f3796c2a83958ee4ce4b5efd6",
      "source": "vulnerabilities@zephyrproject.org"
    },
    {
      "url": "https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-6mcj-5jw8-ff36",
      "source": "vulnerabilities@zephyrproject.org"
    }
  ],
  "vulnStatus": "Awaiting Analysis",
  "weaknesses": [
    {
      "type": "Secondary",
      "source": "vulnerabilities@zephyrproject.org",
      "description": [
        {
          "lang": "en",
          "value": "CWE-401"
        }
      ]
    }
  ],
  "descriptions": [
    {
      "lang": "en",
      "value": "The Bluetooth Link Layer Control Procedure (LLCP) implementation for Connected Isochronous Stream (CIS) creation retains an RX node (ctx->node_ref.rx, marked NODE_RX_TYPE_RETAIN) so it can later be reused as the host notification — on the peripheral while awaiting the Host's reply to an LL_CIS_REQ, and on the central for the whole duration of a locally initiated CIS Create. In subsys/bluetooth/controller/ll_sw/ull_llcp_cc.c, the \"invalid PDU received\" paths of llcp_rp_cc_rx() and llcp_lp_cc_rx() terminated the connection and completed the procedure without releasing that retained node, breaking the invariant checked in llcp_lr_check_done() and llcp_rr_check_done() and orphaning the node's memory.\n\nA peer device within radio range can reach this with a single extra LL Control PDU on an unauthenticated, unencrypted ACL link. Against a peripheral, the attacker sends a valid LL_CIS_REQ and then, before the Host replies, any unrelated LL Control PDU (for example LL_VERSION_IND), which ull_cp_rx() routes into the active remote procedure. Against a central performing a CIS Create, a malicious peripheral answers with LL_UNKNOWN_RSP for CIS_REQ, which is dispatched into the active local procedure. No pairing, encryption or user interaction is required; the code is compiled in when CONFIG_BT_CTLR_PERIPHERAL_ISO or CONFIG_BT_CTLR_CENTRAL_ISO is enabled.\n\nIn default builds (CONFIG_BT_CTLR_ASSERT_DEBUG is default y) the retained-node assertion fires immediately, producing a controller fatal error and, typically, a system reset from one injected PDU. With the development assertions disabled, each attempt permanently loses one node from the controller's small LL notification pool (LL_PDU_RX_CNT, 2 * CONFIG_BT_CTLR_LLCP_CONN) together with its memq_link_t; repeating the connect-attack-reconnect cycle exhausts the pool, after which notification allocation always fails, RX flow control stalls, and the non-disableable LL_ASSERT_ERR() in llcp_lp_cc_flush() faults. The impact is limited to availability — the leaked node is orphaned, never reused or double-freed — and recovery requires a reboot."
    }
  ],
  "lastModified": "2026-10-16T16:17:05.437",
  "sourceIdentifier": "vulnerabilities@zephyrproject.org"
}