A missing length validation in the Zephyr Bluetooth Host ISO receive path can be triggered by malformed HCI ISO data. In btisorecv() (subsys/bluetooth/host/iso.c), when processing PB=START/SINGLE fragments, the code pulls a TS SDU header (8 bytes, ts=1) or a non-TS SDU header (4 bytes, ts=0) without first verifying that buf->len contains at least that many bytes. The outer HCI ISO length check in hciiso() validates payload length consistency but not the minimum inner SDU header size, so a packet with payload length 1 passes hciiso() and then reaches netbufpullmem(), which asserts buf->len >= len. As a result, malformed ISO traffic deterministically triggers a kernel assert (denial of service) in assert-enabled builds, and in non-assert builds the same path may proceed with an undersized buffer, leading to out-of-bounds read behavior. The issue affects products using the Zephyr Host with CONFIGBTISORX enabled, particularly where incoming HCI data can be influenced by a malicious or compromised controller or malformed forwarded ISO traffic.
{
"binaries": [
{
"binary_name": "libzephyr4",
"binary_version": "3.1.2-1build1"
},
{
"binary_name": "libzephyr4-krb5",
"binary_version": "3.1.2-1build1"
},
{
"binary_name": "zephyr-clients",
"binary_version": "3.1.2-1build1"
},
{
"binary_name": "zephyr-server",
"binary_version": "3.1.2-1build1"
},
{
"binary_name": "zephyr-server-krb5",
"binary_version": "3.1.2-1build1"
}
]
}{
"binaries": [
{
"binary_name": "libzephyr4",
"binary_version": "3.1.2-1build2"
},
{
"binary_name": "libzephyr4-krb5",
"binary_version": "3.1.2-1build2"
},
{
"binary_name": "zephyr-clients",
"binary_version": "3.1.2-1build2"
},
{
"binary_name": "zephyr-server",
"binary_version": "3.1.2-1build2"
},
{
"binary_name": "zephyr-server-krb5",
"binary_version": "3.1.2-1build2"
}
]
}{
"binaries": [
{
"binary_name": "libzephyr4",
"binary_version": "3.1.2-1build3"
},
{
"binary_name": "libzephyr4-krb5",
"binary_version": "3.1.2-1build3"
},
{
"binary_name": "zephyr-clients",
"binary_version": "3.1.2-1build3"
},
{
"binary_name": "zephyr-server",
"binary_version": "3.1.2-1build3"
},
{
"binary_name": "zephyr-server-krb5",
"binary_version": "3.1.2-1build3"
}
]
}{
"binaries": [
{
"binary_name": "libzephyr4",
"binary_version": "3.1.2-1build3"
},
{
"binary_name": "libzephyr4-krb5",
"binary_version": "3.1.2-1build3"
},
{
"binary_name": "zephyr-clients",
"binary_version": "3.1.2-1build3"
},
{
"binary_name": "zephyr-server",
"binary_version": "3.1.2-1build3"
},
{
"binary_name": "zephyr-server-krb5",
"binary_version": "3.1.2-1build3"
}
]
}{
"binaries": [
{
"binary_name": "libzephyr4",
"binary_version": "3.1.2-1.1build1"
},
{
"binary_name": "libzephyr4-krb5",
"binary_version": "3.1.2-1.1build1"
},
{
"binary_name": "zephyr-clients",
"binary_version": "3.1.2-1.1build1"
},
{
"binary_name": "zephyr-server",
"binary_version": "3.1.2-1.1build1"
},
{
"binary_name": "zephyr-server-krb5",
"binary_version": "3.1.2-1.1build1"
}
]
}{
"binaries": [
{
"binary_name": "libzephyr4",
"binary_version": "3.1.2-1.1build1"
},
{
"binary_name": "libzephyr4-krb5",
"binary_version": "3.1.2-1.1build1"
},
{
"binary_name": "zephyr-clients",
"binary_version": "3.1.2-1.1build1"
},
{
"binary_name": "zephyr-server",
"binary_version": "3.1.2-1.1build1"
},
{
"binary_name": "zephyr-server-krb5",
"binary_version": "3.1.2-1.1build1"
}
]
}{
"binaries": [
{
"binary_name": "libzephyr4",
"binary_version": "3.1.2-4"
},
{
"binary_name": "libzephyr4-krb5",
"binary_version": "3.1.2-4"
},
{
"binary_name": "zephyr-clients",
"binary_version": "3.1.2-4"
},
{
"binary_name": "zephyr-server",
"binary_version": "3.1.2-4"
},
{
"binary_name": "zephyr-server-krb5",
"binary_version": "3.1.2-4"
}
]
}