The Bluetooth Link Layer control procedure code in subsys/bluetooth/controller/ll_sw/ull_llcp_conn_upd.c retains the received RX node while a Connection Update / Connection Parameter procedure waits for its instant, so the node can later carry the host notification (llcp_rx_node_retain(), which marks it NODE_RX_TYPE_RETAIN and thereby suppresses the normal recycling in ull.c). The default: arm of llcp_rp_cu_rx() and llcp_lp_cu_rx() — the "invalid PDU, terminate the connection" path — completed the procedure without releasing that retained node. llcp_rr_check_done() then dequeued and freed the procedure context with ctx->node_ref.rx still pointing at the retained node, dropping the last reference to it.
A peer device in radio range can reach this without pairing, bonding, or encryption. Against a peripheral, the peer sends a well-formed LL_CONNECTION_UPDATE_IND with an instant a few connection events in the future (the node is retained and the procedure enters RP_CU_STATE_WAIT_INSTANT), then, before the instant is reached, sends any other LL Control PDU such as LL_LENGTH_REQ. ull_cp_rx() routes that PDU into the active remote Connection Update procedure, which takes the invalid-PDU path. The central role is reachable symmetrically after accepting an LL_CONNECTION_PARAM_REQ, and the local-procedure variant is reachable with LL_REJECT_IND.
With CONFIG_BT_CTLR_ASSERT_DEBUG enabled (its default), the resulting state violates the invariant asserted in llcp_rr_check_done(), so the two-PDU sequence produces an immediate fatal error in the controller. With those asserts disabled, each occurrence permanently loses one node from the controller's small fixed RX pool (sized from CONFIG_BT_CTLR_RX_BUFFERS, which defaults to 1); repeating the sequence across reconnections exhausts the pool, after which the link-layer receive path operates on a NULL node. The impact is an unauthenticated, remotely triggerable denial of service persisting until reboot; there is no memory-disclosure or memory-corruption consequence, since the leaked node simply becomes unreachable.
{
"cna_assigner": "zephyr",
"cwe_ids": [
"CWE-401",
"CWE-459",
"CWE-617",
"CWE-772"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/19xxx/CVE-2026-19739.json",
"unresolved_ranges": [
{
"extracted_events": [
{
"introduced": "3.4.0"
},
{
"fixed": "4.5.0"
}
],
"source": "AFFECTED_FIELD"
}
]
}"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-19739.json"
[
{
"deprecated": false,
"digest": {
"line_hashes": [
"19582460921640700883823145666609350276",
"70327733497281197314080326281385650948",
"192205864762686955860602904017978665200",
"266413423332483856109116491504696645058",
"239265278346064429661161105641423286314",
"182136156386148233014511123578553071853",
"104332347445207550105730870340629197316",
"240028068843683746851622613818892275778"
],
"threshold": 0.9
},
"id": "CVE-2026-19739-080f1758",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/zephyrproject-rtos/zephyr/commit/7b600129faaba8bb26dd5cb3e8f17ed1cb41ea7f",
"target": {
"file": "subsys/bluetooth/controller/ll_sw/ull_llcp_conn_upd.c"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "142686180285984502119347850420349181124",
"length": 792
},
"id": "CVE-2026-19739-167c87c3",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/zephyrproject-rtos/zephyr/commit/7b600129faaba8bb26dd5cb3e8f17ed1cb41ea7f",
"target": {
"file": "subsys/bluetooth/controller/ll_sw/ull_llcp_conn_upd.c",
"function": "llcp_lp_cu_rx"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "220278781699429053164355533216587518323",
"length": 584
},
"id": "CVE-2026-19739-636933ef",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/zephyrproject-rtos/zephyr/commit/7b600129faaba8bb26dd5cb3e8f17ed1cb41ea7f",
"target": {
"file": "subsys/bluetooth/controller/ll_sw/ull_llcp_conn_upd.c",
"function": "llcp_rp_cu_rx"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"287473446616294475331988804121089736907",
"176418337956337541381932677774315957259",
"68927949016178508543635903615002082001",
"136737419922936881146493120011392526728",
"200279993544494494173262694600956544596",
"130787850280920371135729038353409637682",
"224491504429444868575325549849874149999"
],
"threshold": 0.9
},
"id": "CVE-2026-19739-ede805bf",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/zephyrproject-rtos/zephyr/commit/7b600129faaba8bb26dd5cb3e8f17ed1cb41ea7f",
"target": {
"file": "tests/bluetooth/controller/ctrl_conn_update/src/main.c"
}
}
]
"2026-10-13T07:01:34Z"