{"id":"CVE-2026-64126","state":"PUBLISHED","title":"Bluetooth: MGMT: validate Add Extended Advertising Data length","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: MGMT: validate Add Extended Advertising Data length\n\nMGMT_OP_ADD_EXT_ADV_DATA is registered as a variable-length command,\nwith MGMT_ADD_EXT_ADV_DATA_SIZE as the fixed header size.  The handler\nthen uses cp->adv_data_len and cp->scan_rsp_len to validate and copy\ncp->data, but it never checks that those bytes are part of the mgmt\ncommand payload.\n\nA short command can therefore make add_ext_adv_data() pass an\nout-of-bounds pointer into tlv_data_is_valid().  If the bytes beyond\nthe command buffer are addressable, they can also be copied into the\nadvertising instance as scan response data, where the caller can read\nthem back via MGMT_OP_GET_ADV_INSTANCE.  The trigger requires\nCAP_NET_ADMIN in the initial user namespace; KASAN reports an 8-byte\nslab-out-of-bounds read.\n\nReject commands whose length does not match the fixed header plus both\nadvertising data lengths before parsing cp->data.","publishedAt":"2026-07-19T15:40:23.276Z","updatedAt":"2026-10-19T20:28:13.544Z","severity":{"score":7.3,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"12410572833a283ce92fcf9679ca8a2f372097ee","status":"affected","lessThan":"0d5104390b445e7bd664ad583837e4c04d892c9d","versionType":"git"},{"version":"12410572833a283ce92fcf9679ca8a2f372097ee","status":"affected","lessThan":"14b01b9cba04e6ce82825f68fc4c4322fa4ffa43","versionType":"git"},{"version":"12410572833a283ce92fcf9679ca8a2f372097ee","status":"affected","lessThan":"a143ce77a5292f2c9285137433d879ce71d190a7","versionType":"git"},{"version":"12410572833a283ce92fcf9679ca8a2f372097ee","status":"affected","lessThan":"a6c75a3fad226ccbd8ef9110dee87c92c299f2ab","versionType":"git"},{"version":"12410572833a283ce92fcf9679ca8a2f372097ee","status":"affected","lessThan":"f1febe93ef075314615f970a87681d9ab86691d1","versionType":"git"},{"version":"12410572833a283ce92fcf9679ca8a2f372097ee","status":"affected","lessThan":"0bc1a5a69f541859293d79db72bd7854ac48df51","versionType":"git"},{"version":"12410572833a283ce92fcf9679ca8a2f372097ee","status":"affected","lessThan":"d3f7d17960ed50df3a6709c5158caff989c8c905","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/bluetooth/mgmt.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.11","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.11","versionType":"semver"},{"version":"5.15.210","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.175","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.142","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.92","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.34","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.0.11","status":"unaffected","lessThanOrEqual":"7.0.*","versionType":"semver"},{"version":"7.1","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/bluetooth/mgmt.c"]}],"references":["https://git.kernel.org/stable/c/0d5104390b445e7bd664ad583837e4c04d892c9d","https://git.kernel.org/stable/c/14b01b9cba04e6ce82825f68fc4c4322fa4ffa43","https://git.kernel.org/stable/c/a143ce77a5292f2c9285137433d879ce71d190a7","https://git.kernel.org/stable/c/a6c75a3fad226ccbd8ef9110dee87c92c299f2ab","https://git.kernel.org/stable/c/f1febe93ef075314615f970a87681d9ab86691d1","https://git.kernel.org/stable/c/0bc1a5a69f541859293d79db72bd7854ac48df51","https://git.kernel.org/stable/c/d3f7d17960ed50df3a6709c5158caff989c8c905"],"weaknesses":["CWE-125"],"ingestedAt":"2026-10-29T20:12:41.951Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/64xxx/CVE-2026-64126.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-64126","state":"PUBLISHED","datePublished":"2026-07-19T15:40:23.276Z","dateUpdated":"2026-10-19T20:28:13.544Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-07-19T07:54:57.036Z"},"containers":{"cna":{"title":"Bluetooth: MGMT: validate Add Extended Advertising Data length","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: MGMT: validate Add Extended Advertising Data length\n\nMGMT_OP_ADD_EXT_ADV_DATA is registered as a variable-length command,\nwith MGMT_ADD_EXT_ADV_DATA_SIZE as the fixed header size.  The handler\nthen uses cp->adv_data_len and cp->scan_rsp_len to validate and copy\ncp->data, but it never checks that those bytes are part of the mgmt\ncommand payload.\n\nA short command can therefore make add_ext_adv_data() pass an\nout-of-bounds pointer into tlv_data_is_valid().  If the bytes beyond\nthe command buffer are addressable, they can also be copied into the\nadvertising instance as scan response data, where the caller can read\nthem back via MGMT_OP_GET_ADV_INSTANCE.  The trigger requires\nCAP_NET_ADMIN in the initial user namespace; KASAN reports an 8-byte\nslab-out-of-bounds read.\n\nReject commands whose length does not match the fixed header plus both\nadvertising data lengths before parsing cp->data."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"12410572833a283ce92fcf9679ca8a2f372097ee","status":"affected","lessThan":"0d5104390b445e7bd664ad583837e4c04d892c9d","versionType":"git"},{"version":"12410572833a283ce92fcf9679ca8a2f372097ee","status":"affected","lessThan":"14b01b9cba04e6ce82825f68fc4c4322fa4ffa43","versionType":"git"},{"version":"12410572833a283ce92fcf9679ca8a2f372097ee","status":"affected","lessThan":"a143ce77a5292f2c9285137433d879ce71d190a7","versionType":"git"},{"version":"12410572833a283ce92fcf9679ca8a2f372097ee","status":"affected","lessThan":"a6c75a3fad226ccbd8ef9110dee87c92c299f2ab","versionType":"git"},{"version":"12410572833a283ce92fcf9679ca8a2f372097ee","status":"affected","lessThan":"f1febe93ef075314615f970a87681d9ab86691d1","versionType":"git"},{"version":"12410572833a283ce92fcf9679ca8a2f372097ee","status":"affected","lessThan":"0bc1a5a69f541859293d79db72bd7854ac48df51","versionType":"git"},{"version":"12410572833a283ce92fcf9679ca8a2f372097ee","status":"affected","lessThan":"d3f7d17960ed50df3a6709c5158caff989c8c905","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/bluetooth/mgmt.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.11","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.11","versionType":"semver"},{"version":"5.15.210","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.175","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.142","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.92","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.34","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.0.11","status":"unaffected","lessThanOrEqual":"7.0.*","versionType":"semver"},{"version":"7.1","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/bluetooth/mgmt.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/0d5104390b445e7bd664ad583837e4c04d892c9d"},{"url":"https://git.kernel.org/stable/c/14b01b9cba04e6ce82825f68fc4c4322fa4ffa43"},{"url":"https://git.kernel.org/stable/c/a143ce77a5292f2c9285137433d879ce71d190a7"},{"url":"https://git.kernel.org/stable/c/a6c75a3fad226ccbd8ef9110dee87c92c299f2ab"},{"url":"https://git.kernel.org/stable/c/f1febe93ef075314615f970a87681d9ab86691d1"},{"url":"https://git.kernel.org/stable/c/0bc1a5a69f541859293d79db72bd7854ac48df51"},{"url":"https://git.kernel.org/stable/c/d3f7d17960ed50df3a6709c5158caff989c8c905"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L","baseScore":7.3,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - The bug is reached only through a local Bluetooth MGMT socket (AF_BLUETOOTH, HCI_CHANNEL_CONTROL) via sendmsg(), not from remote Bluetooth air traffic or network protocols.\nAC:L - An attacker fully controls the malformed MGMT command and length fields and can retry reliably; no race or victim-dependent timing is required to trigger the out-of-bounds read and copy.\nPR:L - Exploitation requires CAP_NET_ADMIN to obtain an HCI_SOCK_TRUSTED MGMT socket, which is reachable by an unprivileged user via user namespaces (e.g. unshare with CAP_NET_ADMIN) on the CONTROL-channel bind path.\nUI:N - No victim interaction is required; the attacker triggers the flaw directly by sending a crafted MGMT_OP_ADD_EXT_ADV_DATA command.\nS:U - Impact is confined to kernel memory disclosure and modification of Bluetooth advertising state within the same kernel security boundary, with no VM escape or cross-authority boundary crossing.\nC:H - A short command causes slab out-of-bounds reads (KASAN-reported) via tlv_data_is_valid(), and addressable bytes beyond the command buffer can be copied into scan response data and potentially exfiltrated over BLE advertising.\nI:H - The out-of-bounds pointer is used in memcpy() into kernel advertising structures, constituting kernel memory corruption with attacker-influenced content that can alter system-controlled Bluetooth data.\nA:L - While the primary impact is information disclosure, out-of-bounds kernel memory access can cause oopses or instability on some layouts; when uncertain, availability impact is rated above none."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T12:39:32.975Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.11","versionEndExcluding":"5.15.210"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.11","versionEndExcluding":"6.1.175"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.11","versionEndExcluding":"6.6.142"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.11","versionEndExcluding":"6.12.92"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.11","versionEndExcluding":"6.18.34"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.11","versionEndExcluding":"7.0.11"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.11","versionEndExcluding":"7.1"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2026-64126","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"total"}],"version":"2.0.3","timestamp":"2026-10-16T15:36:50.332780Z"}}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-125","lang":"en","type":"CWE","description":"CWE-125 Out-of-bounds Read"}]}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-19T20:28:13.544Z"}}]}}}