{"api_version":"1","generated_at":"2026-04-15T06:35:19+00:00","cve":"CVE-2026-31393","urls":{"html":"https://cve.report/CVE-2026-31393","api":"https://cve.report/api/cve/CVE-2026-31393.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-31393","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-31393"},"summary":{"title":"Bluetooth: L2CAP: Validate L2CAP_INFO_RSP payload length before access","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: L2CAP: Validate L2CAP_INFO_RSP payload length before access\n\nl2cap_information_rsp() checks that cmd_len covers the fixed\nl2cap_info_rsp header (type + result, 4 bytes) but then reads\nrsp->data without verifying that the payload is present:\n\n - L2CAP_IT_FEAT_MASK calls get_unaligned_le32(rsp->data), which reads\n   4 bytes past the header (needs cmd_len >= 8).\n\n - L2CAP_IT_FIXED_CHAN reads rsp->data[0], 1 byte past the header\n   (needs cmd_len >= 5).\n\nA truncated L2CAP_INFO_RSP with result == L2CAP_IR_SUCCESS triggers an\nout-of-bounds read of adjacent skb data.\n\nGuard each data access with the required payload length check.  If the\npayload is too short, skip the read and let the state machine complete\nwith safe defaults (feat_mask and remote_fixed_chan remain zero from\nkzalloc), so the info timer cleanup and l2cap_conn_start() still run\nand the connection is not stalled.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-04-03 16:16:37","updated_at":"2026-04-07 13:20:55"},"problem_types":[],"metrics":[],"references":[{"url":"https://git.kernel.org/stable/c/3b646516cba2ebc4b51a72954903326e7c1e443f","name":"https://git.kernel.org/stable/c/3b646516cba2ebc4b51a72954903326e7c1e443f","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/dd815e6e3918dc75a49aaabac36e4f024d675101","name":"https://git.kernel.org/stable/c/dd815e6e3918dc75a49aaabac36e4f024d675101","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/807bd1258453c4c83f6ae9dbc1e7b44860ff40d0","name":"https://git.kernel.org/stable/c/807bd1258453c4c83f6ae9dbc1e7b44860ff40d0","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/9aeacde4da0f02d42fd968fd32f245828b230171","name":"https://git.kernel.org/stable/c/9aeacde4da0f02d42fd968fd32f245828b230171","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/db2872d054e467810078e2b9f440a5b326a601b2","name":"https://git.kernel.org/stable/c/db2872d054e467810078e2b9f440a5b326a601b2","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/e7ff754e339e3d5ce29aa9f95352d0186df8fbd9","name":"https://git.kernel.org/stable/c/e7ff754e339e3d5ce29aa9f95352d0186df8fbd9","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-31393","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-31393","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 4e8402a3f884427f9233ba436459c158d1f2e114 3b646516cba2ebc4b51a72954903326e7c1e443f git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 4e8402a3f884427f9233ba436459c158d1f2e114 807bd1258453c4c83f6ae9dbc1e7b44860ff40d0 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 4e8402a3f884427f9233ba436459c158d1f2e114 9aeacde4da0f02d42fd968fd32f245828b230171 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 4e8402a3f884427f9233ba436459c158d1f2e114 e7ff754e339e3d5ce29aa9f95352d0186df8fbd9 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 4e8402a3f884427f9233ba436459c158d1f2e114 db2872d054e467810078e2b9f440a5b326a601b2 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 4e8402a3f884427f9233ba436459c158d1f2e114 dd815e6e3918dc75a49aaabac36e4f024d675101 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 2.6.24","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 2.6.24 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.1.167 6.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.6.130 6.6.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.12.78 6.12.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.20 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.19.10 6.19.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.0-rc5 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2026","cve_id":"31393","cve":"CVE-2026-31393","epss":"0.000240000","percentile":"0.066190000","score_date":"2026-04-07","updated_at":"2026-04-08 00:03:39"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["net/bluetooth/l2cap_core.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"3b646516cba2ebc4b51a72954903326e7c1e443f","status":"affected","version":"4e8402a3f884427f9233ba436459c158d1f2e114","versionType":"git"},{"lessThan":"807bd1258453c4c83f6ae9dbc1e7b44860ff40d0","status":"affected","version":"4e8402a3f884427f9233ba436459c158d1f2e114","versionType":"git"},{"lessThan":"9aeacde4da0f02d42fd968fd32f245828b230171","status":"affected","version":"4e8402a3f884427f9233ba436459c158d1f2e114","versionType":"git"},{"lessThan":"e7ff754e339e3d5ce29aa9f95352d0186df8fbd9","status":"affected","version":"4e8402a3f884427f9233ba436459c158d1f2e114","versionType":"git"},{"lessThan":"db2872d054e467810078e2b9f440a5b326a601b2","status":"affected","version":"4e8402a3f884427f9233ba436459c158d1f2e114","versionType":"git"},{"lessThan":"dd815e6e3918dc75a49aaabac36e4f024d675101","status":"affected","version":"4e8402a3f884427f9233ba436459c158d1f2e114","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["net/bluetooth/l2cap_core.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"2.6.24"},{"lessThan":"2.6.24","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"6.1.*","status":"unaffected","version":"6.1.167","versionType":"semver"},{"lessThanOrEqual":"6.6.*","status":"unaffected","version":"6.6.130","versionType":"semver"},{"lessThanOrEqual":"6.12.*","status":"unaffected","version":"6.12.78","versionType":"semver"},{"lessThanOrEqual":"6.18.*","status":"unaffected","version":"6.18.20","versionType":"semver"},{"lessThanOrEqual":"6.19.*","status":"unaffected","version":"6.19.10","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.0-rc5","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.1.167","versionStartIncluding":"2.6.24","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.6.130","versionStartIncluding":"2.6.24","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.78","versionStartIncluding":"2.6.24","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.20","versionStartIncluding":"2.6.24","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.19.10","versionStartIncluding":"2.6.24","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.0-rc5","versionStartIncluding":"2.6.24","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: L2CAP: Validate L2CAP_INFO_RSP payload length before access\n\nl2cap_information_rsp() checks that cmd_len covers the fixed\nl2cap_info_rsp header (type + result, 4 bytes) but then reads\nrsp->data without verifying that the payload is present:\n\n - L2CAP_IT_FEAT_MASK calls get_unaligned_le32(rsp->data), which reads\n   4 bytes past the header (needs cmd_len >= 8).\n\n - L2CAP_IT_FIXED_CHAN reads rsp->data[0], 1 byte past the header\n   (needs cmd_len >= 5).\n\nA truncated L2CAP_INFO_RSP with result == L2CAP_IR_SUCCESS triggers an\nout-of-bounds read of adjacent skb data.\n\nGuard each data access with the required payload length check.  If the\npayload is too short, skip the read and let the state machine complete\nwith safe defaults (feat_mask and remote_fixed_chan remain zero from\nkzalloc), so the info timer cleanup and l2cap_conn_start() still run\nand the connection is not stalled."}],"providerMetadata":{"dateUpdated":"2026-04-03T15:15:58.142Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/3b646516cba2ebc4b51a72954903326e7c1e443f"},{"url":"https://git.kernel.org/stable/c/807bd1258453c4c83f6ae9dbc1e7b44860ff40d0"},{"url":"https://git.kernel.org/stable/c/9aeacde4da0f02d42fd968fd32f245828b230171"},{"url":"https://git.kernel.org/stable/c/e7ff754e339e3d5ce29aa9f95352d0186df8fbd9"},{"url":"https://git.kernel.org/stable/c/db2872d054e467810078e2b9f440a5b326a601b2"},{"url":"https://git.kernel.org/stable/c/dd815e6e3918dc75a49aaabac36e4f024d675101"}],"title":"Bluetooth: L2CAP: Validate L2CAP_INFO_RSP payload length before access","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-31393","datePublished":"2026-04-03T15:15:58.142Z","dateReserved":"2026-03-09T15:48:24.085Z","dateUpdated":"2026-04-03T15:15:58.142Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-04-03 16:16:37","lastModifiedDate":"2026-04-07 13:20:55","problem_types":[],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"31393","Ordinal":"1","Title":"Bluetooth: L2CAP: Validate L2CAP_INFO_RSP payload length before ","CVE":"CVE-2026-31393","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"31393","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: L2CAP: Validate L2CAP_INFO_RSP payload length before access\n\nl2cap_information_rsp() checks that cmd_len covers the fixed\nl2cap_info_rsp header (type + result, 4 bytes) but then reads\nrsp->data without verifying that the payload is present:\n\n - L2CAP_IT_FEAT_MASK calls get_unaligned_le32(rsp->data), which reads\n   4 bytes past the header (needs cmd_len >= 8).\n\n - L2CAP_IT_FIXED_CHAN reads rsp->data[0], 1 byte past the header\n   (needs cmd_len >= 5).\n\nA truncated L2CAP_INFO_RSP with result == L2CAP_IR_SUCCESS triggers an\nout-of-bounds read of adjacent skb data.\n\nGuard each data access with the required payload length check.  If the\npayload is too short, skip the read and let the state machine complete\nwith safe defaults (feat_mask and remote_fixed_chan remain zero from\nkzalloc), so the info timer cleanup and l2cap_conn_start() still run\nand the connection is not stalled.","Type":"Description","Title":"Bluetooth: L2CAP: Validate L2CAP_INFO_RSP payload length before "}]}}}