Bluetooth: L2CAP: Validate L2CAP_INFO_RSP payload length before access
- 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.10.253, 5.15.203, 6.1.167, 6.6.130, 6.12.78, and 2 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: partial
Summary
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: L2CAP: Validate L2CAP_INFO_RSP payload length before access l2cap_information_rsp() checks that cmd_len covers the fixed l2cap_info_rsp header (type + result, 4 bytes) but then reads rsp->data without verifying that the payload is present: • L2CAP_IT_FEAT_MASK calls get_unaligned_le32(rsp->data), which reads 4 bytes past the header (needs cmd_len >= 8). • L2CAP_IT_FIXED_CHAN reads rsp->data[0], 1 byte past the header (needs cmd_len >= 5). A truncated L2CAP_INFO_RSP with result == L2CAP_IR_SUCCESS triggers an out-of-bounds read of adjacent skb data. Guard each data access with the required payload length check. If the payload is too short, skip the read and let the state machine complete with safe defaults (feat_mask and remote_fixed_chan remain zero from kzalloc), so the info timer cleanup and l2cap_conn_start() still run and the connection is not stalled.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: partial
- Record last updated
Affected versions
- Linux Linux
From 4e8402a3f884427f9233ba436459c158d1f2e114 · fixed in 187e6fe939295be36063a1d91f8bebee04399a8c; From 4e8402a3f884427f9233ba436459c158d1f2e114 · fixed in 5229e7d15771eac2b5886bfb1f976aea0c1eec14; From 4e8402a3f884427f9233ba436459c158d1f2e114 · fixed in 3b646516cba2ebc4b51a72954903326e7c1e443f; From 4e8402a3f884427f9233ba436459c158d1f2e114 · fixed in 807bd1258453c4c83f6ae9dbc1e7b44860ff40d0; From 4e8402a3f884427f9233ba436459c158d1f2e114 · fixed in 9aeacde4da0f02d42fd968fd32f245828b230171; From 4e8402a3f884427f9233ba436459c158d1f2e114 · fixed in e7ff754e339e3d5ce29aa9f95352d0186df8fbd9; From 4e8402a3f884427f9233ba436459c158d1f2e114 · fixed in db2872d054e467810078e2b9f440a5b326a601b2; From 4e8402a3f884427f9233ba436459c158d1f2e114 · fixed in dd815e6e3918dc75a49aaabac36e4f024d675101
- Linux Linux
2.6.24
- KernelLinux
From 2.6.24 · fixed in 5.10.253; From 5.11.0 · fixed in 5.15.203; From 5.16.0 · fixed in 6.1.167; From 6.2.0 · fixed in 6.6.130; From 6.7.0 · fixed in 6.12.78; From 6.13.0 · fixed in 6.18.20; From 6.19.0 · fixed in 6.19.10
References 8
git.kernel.org
- stable/c/187e6fe939295be36063a1d91f8bebee04399a8c
- stable/c/5229e7d15771eac2b5886bfb1f976aea0c1eec14
- stable/c/3b646516cba2ebc4b51a72954903326e7c1e443f
- stable/c/807bd1258453c4c83f6ae9dbc1e7b44860ff40d0
- stable/c/9aeacde4da0f02d42fd968fd32f245828b230171
- stable/c/e7ff754e339e3d5ce29aa9f95352d0186df8fbd9
- stable/c/db2872d054e467810078e2b9f440a5b326a601b2
- stable/c/dd815e6e3918dc75a49aaabac36e4f024d675101