bt_sdp_parse_attribute() in subsys/bluetooth/host/classic/sdp.c validated only that the SDP record buffer held the type-marker byte plus the 2-byte attribute ID (a check of buf->len < 3) but then read a fourth byte, the data-element descriptor (type), via net_buf_simple_pull_u8(). Because net_buf_simple_pull_u8() dereferences buf->data[0] before its only bounds guard (an __ASSERT_NO_MSG that compiles out when CONFIG_ASSERT is disabled, the production default), a record of exactly three bytes (0x09 followed by a 2-byte attribute ID) causes a one-byte read past the end of the logical buffer. The parser is reachable from inbound, remote-controlled data: a Bluetooth BR/EDR peer acting as an SDP server returns discovery-response records that are stored verbatim in the client receive buffer and parsed via the public bt_sdp_get_attr()/bt_sdp_has_attr()/bt_sdp_record_parse() helpers. The over-read is bounded to a single byte that is used only as an internal length selector and is never leaked to the attacker; subsequent length checks then reject the malformed record. Realistic impact is therefore limited to an edge-case denial of service (a fault only if the record ends exactly at a mapped-memory boundary, or a deterministic assert panic when CONFIG_ASSERT=y). Affects Zephyr v4.3.0 and v4.4.0; fixed by adding sizeof(type) to the length check.
{
"cna_assigner": "zephyr",
"cwe_ids": [
"CWE-20",
"CWE-617"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/10xxx/CVE-2026-10651.json",
"unresolved_ranges": [
{
"extracted_events": [
{
"range": [
{
"introduced": "4.3.0"
},
{
"fixed": "4.6.0"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StandardRange"
}
]
}
]
}{
"extracted_events": [
{
"range": [
{
"fixed": "dfac5224ab65fc7b81be2926386173c169318335"
}
],
"source": "REFERENCES_COMMIT"
}
]
}
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-10651.json"
[
{
"deprecated": false,
"digest": {
"function_hash": "181490804232345087155571875868232602984",
"length": 748
},
"id": "CVE-2026-10651-1110ab8c",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/zephyrproject-rtos/zephyr/commit/dfac5224ab65fc7b81be2926386173c169318335",
"target": {
"file": "subsys/bluetooth/host/classic/sdp.c",
"function": "bt_sdp_parse_attribute"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"300777978945596541475858165639871293942",
"319615261220531656919149364801276042896",
"141918001522701707879325914715640253095",
"289213271975755437991654047501680297624"
],
"threshold": 0.9
},
"id": "CVE-2026-10651-c7abf3ea",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/zephyrproject-rtos/zephyr/commit/dfac5224ab65fc7b81be2926386173c169318335",
"target": {
"file": "subsys/bluetooth/host/classic/sdp.c"
}
}
]
"2026-11-05T08:04:09Z"