CVE-2026-31393 (GCVE-0-2026-31393)
Vulnerability from cvelistv5
Published
2026-04-03 15:15
Modified
2026-08-05 12:22
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.
Impacted products
Vendor Product Version
Linux Linux Version: 4e8402a3f884427f9233ba436459c158d1f2e114
Version: 4e8402a3f884427f9233ba436459c158d1f2e114
Version: 4e8402a3f884427f9233ba436459c158d1f2e114
Version: 4e8402a3f884427f9233ba436459c158d1f2e114
Version: 4e8402a3f884427f9233ba436459c158d1f2e114
Version: 4e8402a3f884427f9233ba436459c158d1f2e114
Version: 4e8402a3f884427f9233ba436459c158d1f2e114
Version: 4e8402a3f884427f9233ba436459c158d1f2e114
Create a notification for this product.
Show details on NVD website


{
  "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": "187e6fe939295be36063a1d91f8bebee04399a8c",
              "status": "affected",
              "version": "4e8402a3f884427f9233ba436459c158d1f2e114",
              "versionType": "git"
            },
            {
              "lessThan": "5229e7d15771eac2b5886bfb1f976aea0c1eec14",
              "status": "affected",
              "version": "4e8402a3f884427f9233ba436459c158d1f2e114",
              "versionType": "git"
            },
            {
              "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": "5.10.*",
              "status": "unaffected",
              "version": "5.10.253",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.203",
              "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",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.253",
                  "versionStartIncluding": "2.6.24",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.203",
                  "versionStartIncluding": "2.6.24",
                  "vulnerable": true
                },
                {
                  "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",
                  "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-\u003edata without verifying that the payload is present:\n\n - L2CAP_IT_FEAT_MASK calls get_unaligned_le32(rsp-\u003edata), which reads\n   4 bytes past the header (needs cmd_len \u003e= 8).\n\n - L2CAP_IT_FIXED_CHAN reads rsp-\u003edata[0], 1 byte past the header\n   (needs cmd_len \u003e= 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."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 8.1,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:A - The vulnerable parser is reached by Bluetooth BR/EDR L2CAP signaling over an ACL link, so an attacker must be within Bluetooth radio range rather than on a routed IP network.\nAC:L - The attacker controls the malformed L2CAP_INFO_RSP payload and sees the kernel\u0027s request identifier before responding. No race or unusual condition beyond establishing the Bluetooth link is required.\nPR:N - The L2CAP information exchange occurs during connection setup before L2CAP channel security/authentication gates are enforced. A malicious adjacent Bluetooth peer does not need local credentials or kernel privileges on the victim.\nUI:N - In a reasonable connectable Bluetooth deployment, the peer can trigger the receive path by establishing or participating in an ACL/L2CAP connection. No victim user action is required for the malformed response itself.\nS:U - The bug is in the kernel Bluetooth stack and impacts kernel-managed resources in the same security authority. It does not cross a VM, IOMMU, or other separate security boundary.\nC:H - The bug performs an out-of-bounds read from skb-adjacent data past the declared L2CAP_INFO_RSP payload. Under the required conservative scoring for kernel out-of-bounds reads, this is treated as high confidentiality impact.\nI:N - The flaw is an out-of-bounds read, not a write or type confusion primitive. It can corrupt protocol state selection, but does not provide a defensible arbitrary modification or code execution primitive.\nA:H - Reading past the valid skb data can trigger a kernel fault, KASAN report, oops, or panic on hardened/debug configurations. An adjacent peer can repeat the malformed response during connection setup, so availability impact is high."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:22:04.813Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/187e6fe939295be36063a1d91f8bebee04399a8c"
        },
        {
          "url": "https://git.kernel.org/stable/c/5229e7d15771eac2b5886bfb1f976aea0c1eec14"
        },
        {
          "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-08-05T12:22:04.813Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…