Skip to content
Heist/ feed
Back to feed
HighFix available

Bluetooth: L2CAP: Validate L2CAP_INFO_RSP payload length before access

Type: advisorySources: OSV

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.

Products
Kernel
Affected versions
Not specified
Fixed versions
5.10.253, 5.15.203, 6.1.167, 6.12.78, 6.18.20, 6.19.10, 6.6.130
CVEs
CVE-2026-31393
Confirmed fixed CVEs
Not specified
Updated in this feed
4 Nov 2026, 19:50 UTC · Revision 1

Source evidence

Bluetooth: L2CAP: Validate L2CAP_INFO_RSP payload length before access

core-osv · Original source

Published 3 Apr 2026, 15:15 UTC

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.

osv:CVE-2026-31393

Kernel

Fixed versions: 5.10.253, 5.15.203, 6.1.167, 6.6.130, 6.12.78, 6.18.20, 6.19.10

Complete source record
{
  "id": "e1fe848ce44489faef4c4e0702529e0dfcd8fb480a04c2d1488c8464f07a9075",
  "url": "https://osv.dev/vulnerability/CVE-2026-31393",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Bluetooth: L2CAP: Validate L2CAP_INFO_RSP payload length before access",
    "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.",
    "evidence": "osv:CVE-2026-31393",
    "products": [
      {
        "name": {
          "value": "Kernel",
          "evidence": "/affected/1/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "5.10.253",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "5.15.203",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.1.167",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.6.130",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.12.78",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.18.20",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.19.10",
            "evidence": "/affected/1/ranges"
          }
        ],
        "affected_versions": []
      }
    ],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-31393",
      "aliases": [
        "CVE-2026-31393"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "4e8402a3f884427f9233ba436459c158d1f2e114"
                },
                {
                  "fixed": "187e6fe939295be36063a1d91f8bebee04399a8c"
                },
                {
                  "fixed": "5229e7d15771eac2b5886bfb1f976aea0c1eec14"
                },
                {
                  "fixed": "3b646516cba2ebc4b51a72954903326e7c1e443f"
                },
                {
                  "fixed": "807bd1258453c4c83f6ae9dbc1e7b44860ff40d0"
                },
                {
                  "fixed": "9aeacde4da0f02d42fd968fd32f245828b230171"
                },
                {
                  "fixed": "e7ff754e339e3d5ce29aa9f95352d0186df8fbd9"
                },
                {
                  "fixed": "db2872d054e467810078e2b9f440a5b326a601b2"
                },
                {
                  "fixed": "dd815e6e3918dc75a49aaabac36e4f024d675101"
                }
              ]
            }
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-31393.json"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "2.6.24"
                },
                {
                  "fixed": "5.10.253"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.11.0"
                },
                {
                  "fixed": "5.15.203"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.16.0"
                },
                {
                  "fixed": "6.1.167"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.2.0"
                },
                {
                  "fixed": "6.6.130"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.7.0"
                },
                {
                  "fixed": "6.12.78"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.13.0"
                },
                {
                  "fixed": "6.18.20"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.19.0"
                },
                {
                  "fixed": "6.19.10"
                }
              ]
            }
          ],
          "package": {
            "name": "Kernel",
            "ecosystem": "Linux"
          },
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-31393.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:38.874615141Z",
      "provider": "osv",
      "references": [
        "https://git.kernel.org/stable/c/187e6fe939295be36063a1d91f8bebee04399a8c",
        "https://git.kernel.org/stable/c/3b646516cba2ebc4b51a72954903326e7c1e443f",
        "https://git.kernel.org/stable/c/5229e7d15771eac2b5886bfb1f976aea0c1eec14",
        "https://git.kernel.org/stable/c/807bd1258453c4c83f6ae9dbc1e7b44860ff40d0",
        "https://git.kernel.org/stable/c/9aeacde4da0f02d42fd968fd32f245828b230171",
        "https://git.kernel.org/stable/c/db2872d054e467810078e2b9f440a5b326a601b2",
        "https://git.kernel.org/stable/c/dd815e6e3918dc75a49aaabac36e4f024d675101",
        "https://git.kernel.org/stable/c/e7ff754e339e3d5ce29aa9f95352d0186df8fbd9",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/31xxx/CVE-2026-31393.json",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-31393",
        "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
      ],
      "provider_metadata": {
        "cna_assigner": "Linux",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/31xxx/CVE-2026-31393.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-31393",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 506365,
  "published_at": "2026-04-03T15:15:58.142+00:00"
}