Bluetooth: MGMT: validate Add Extended Advertising Data length
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.15.210, 6.1.175, 6.6.142, 6.12.92, 6.18.34, and 1 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: none
- Automatable: no
- Technical impact: total
Summary
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: MGMT: validate Add Extended Advertising Data length MGMT_OP_ADD_EXT_ADV_DATA is registered as a variable-length command, with MGMT_ADD_EXT_ADV_DATA_SIZE as the fixed header size. The handler then uses cp->adv_data_len and cp->scan_rsp_len to validate and copy cp->data, but it never checks that those bytes are part of the mgmt command payload. A short command can therefore make add_ext_adv_data() pass an out-of-bounds pointer into tlv_data_is_valid(). If the bytes beyond the command buffer are addressable, they can also be copied into the advertising instance as scan response data, where the caller can read them back via MGMT_OP_GET_ADV_INSTANCE. The trigger requires CAP_NET_ADMIN in the initial user namespace; KASAN reports an 8-byte slab-out-of-bounds read. Reject commands whose length does not match the fixed header plus both advertising data lengths before parsing cp->data.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From 12410572833a283ce92fcf9679ca8a2f372097ee · fixed in 0d5104390b445e7bd664ad583837e4c04d892c9d; From 12410572833a283ce92fcf9679ca8a2f372097ee · fixed in 14b01b9cba04e6ce82825f68fc4c4322fa4ffa43; From 12410572833a283ce92fcf9679ca8a2f372097ee · fixed in a143ce77a5292f2c9285137433d879ce71d190a7; From 12410572833a283ce92fcf9679ca8a2f372097ee · fixed in a6c75a3fad226ccbd8ef9110dee87c92c299f2ab; From 12410572833a283ce92fcf9679ca8a2f372097ee · fixed in f1febe93ef075314615f970a87681d9ab86691d1; From 12410572833a283ce92fcf9679ca8a2f372097ee · fixed in 0bc1a5a69f541859293d79db72bd7854ac48df51; From 12410572833a283ce92fcf9679ca8a2f372097ee · fixed in d3f7d17960ed50df3a6709c5158caff989c8c905
- Linux Linux
5.11
- KernelLinux
From 5.11.0 · fixed in 5.15.210; From 5.16.0 · fixed in 6.1.175; From 6.2.0 · fixed in 6.6.142; From 6.7.0 · fixed in 6.12.92; From 6.13.0 · fixed in 6.18.34; From 6.19.0 · fixed in 7.0.11
References 7
git.kernel.org
- stable/c/0d5104390b445e7bd664ad583837e4c04d892c9d
- stable/c/14b01b9cba04e6ce82825f68fc4c4322fa4ffa43
- stable/c/a143ce77a5292f2c9285137433d879ce71d190a7
- stable/c/a6c75a3fad226ccbd8ef9110dee87c92c299f2ab
- stable/c/f1febe93ef075314615f970a87681d9ab86691d1
- stable/c/0bc1a5a69f541859293d79db72bd7854ac48df51
- stable/c/d3f7d17960ed50df3a6709c5158caff989c8c905