8.1
/ 10
HIGH
CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H
Description
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.
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.
Basic Information
ID
CVE-2026-31393
Source
Linux
Published
Apr 3, 2026 at 15:15
Modified
Apr 27, 2026 at 14:02
Affected Product
Vendor
Linux
Product
Linux
Version
4e8402a3f884427f9233ba436459c158d1f2e114
Affected Versions
Linux Linux 4e8402a3f884427f9233ba436459c158d1f2e114
Linux Linux 4e8402a3f884427f9233ba436459c158d1f2e114
Linux Linux 4e8402a3f884427f9233ba436459c158d1f2e114
Linux Linux 4e8402a3f884427f9233ba436459c158d1f2e114
Linux Linux 4e8402a3f884427f9233ba436459c158d1f2e114
Linux Linux 4e8402a3f884427f9233ba436459c158d1f2e114
Linux Linux 4e8402a3f884427f9233ba436459c158d1f2e114
Linux Linux 4e8402a3f884427f9233ba436459c158d1f2e114
Linux Linux 2.6.24
Linux Linux 4e8402a3f884427f9233ba436459c158d1f2e114
Linux Linux 4e8402a3f884427f9233ba436459c158d1f2e114
Linux Linux 4e8402a3f884427f9233ba436459c158d1f2e114
Linux Linux 4e8402a3f884427f9233ba436459c158d1f2e114
Linux Linux 4e8402a3f884427f9233ba436459c158d1f2e114
Linux Linux 4e8402a3f884427f9233ba436459c158d1f2e114
Linux Linux 4e8402a3f884427f9233ba436459c158d1f2e114
Linux Linux 2.6.24
References
- git.kernel.org /stable/c/187e6fe939295be36063a1d91f8bebee04399a8c
- git.kernel.org /stable/c/5229e7d15771eac2b5886bfb1f976aea0c1eec14
- git.kernel.org /stable/c/3b646516cba2ebc4b51a72954903326e7c1e443f
- git.kernel.org /stable/c/807bd1258453c4c83f6ae9dbc1e7b44860ff40d0
- git.kernel.org /stable/c/9aeacde4da0f02d42fd968fd32f245828b230171
- git.kernel.org /stable/c/e7ff754e339e3d5ce29aa9f95352d0186df8fbd9
- git.kernel.org /stable/c/db2872d054e467810078e2b9f440a5b326a601b2
- git.kernel.org /stable/c/dd815e6e3918dc75a49aaabac36e4f024d675101