CVE-2026-98456 (GCVE-0-2026-98456)
Vulnerability from cvelistv5
Published
2026-10-18 15:15
Modified
2026-10-30 12:38
Summary
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: mgmt: fix race in read_unconf_index_list() read_unconf_index_list() counts unconfigured controllers before allocating its response, then checks the device flags again while filling it. hci_dev_list_lock stabilizes list membership, but it does not serialize the per-device flags. During asynchronous controller setup, the worker can set HCI_UNCONFIGURED and clear HCI_SETUP between the two passes. A controller omitted from the allocation count can then become eligible for the fill pass, causing an out-of-bounds write to rp->index[]. Allocate space for every device on hci_dev_list. Since list membership cannot change while hci_dev_list_lock is held, the response remains large enough regardless of flag transitions. The reported count and response length still include only eligible unconfigured controllers.
Impacted products
Vendor Product Version
Linux Linux Version: 73d1df2a7a1036a1f000e5f0ece6ade3e082b854
Version: 73d1df2a7a1036a1f000e5f0ece6ade3e082b854
Version: 73d1df2a7a1036a1f000e5f0ece6ade3e082b854
Version: 73d1df2a7a1036a1f000e5f0ece6ade3e082b854
Version: 73d1df2a7a1036a1f000e5f0ece6ade3e082b854
Version: 73d1df2a7a1036a1f000e5f0ece6ade3e082b854
Version: 73d1df2a7a1036a1f000e5f0ece6ade3e082b854
Version: 73d1df2a7a1036a1f000e5f0ece6ade3e082b854
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "net/bluetooth/mgmt.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "fa6f79bb0009406bb11e6912b53ab7c564d6f06b",
              "status": "affected",
              "version": "73d1df2a7a1036a1f000e5f0ece6ade3e082b854",
              "versionType": "git"
            },
            {
              "lessThan": "76dc7e0297f6f7ebefc36a69251e3f4a676d9853",
              "status": "affected",
              "version": "73d1df2a7a1036a1f000e5f0ece6ade3e082b854",
              "versionType": "git"
            },
            {
              "lessThan": "9c32455f490b960efccedd041c7aabb1a04c5cc4",
              "status": "affected",
              "version": "73d1df2a7a1036a1f000e5f0ece6ade3e082b854",
              "versionType": "git"
            },
            {
              "lessThan": "524e0450dd9a396f99a81b045219b0e2ea0dab57",
              "status": "affected",
              "version": "73d1df2a7a1036a1f000e5f0ece6ade3e082b854",
              "versionType": "git"
            },
            {
              "lessThan": "8ddf962c76432a10a6cb80042875cbc48a9c056b",
              "status": "affected",
              "version": "73d1df2a7a1036a1f000e5f0ece6ade3e082b854",
              "versionType": "git"
            },
            {
              "lessThan": "416546cd6a54e9b68f2b91bc680b1ee17dcd77a1",
              "status": "affected",
              "version": "73d1df2a7a1036a1f000e5f0ece6ade3e082b854",
              "versionType": "git"
            },
            {
              "lessThan": "2e8bba0360d1379bfa8da47c8f5dadbb10a3fba1",
              "status": "affected",
              "version": "73d1df2a7a1036a1f000e5f0ece6ade3e082b854",
              "versionType": "git"
            },
            {
              "lessThan": "b5dbb41b212c50c095a4dbee3017a84fe94f033b",
              "status": "affected",
              "version": "73d1df2a7a1036a1f000e5f0ece6ade3e082b854",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "net/bluetooth/mgmt.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "3.17"
            },
            {
              "lessThan": "3.17",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.273",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.224",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.191",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.158",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.112",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.55",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.9",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.273",
                  "versionStartIncluding": "3.17",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.224",
                  "versionStartIncluding": "3.17",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.191",
                  "versionStartIncluding": "3.17",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.158",
                  "versionStartIncluding": "3.17",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.112",
                  "versionStartIncluding": "3.17",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.55",
                  "versionStartIncluding": "3.17",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.9",
                  "versionStartIncluding": "3.17",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3",
                  "versionStartIncluding": "3.17",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: mgmt: fix race in read_unconf_index_list()\n\nread_unconf_index_list() counts unconfigured controllers before allocating\nits response, then checks the device flags again while filling it.\n\nhci_dev_list_lock stabilizes list membership, but it does not serialize the\nper-device flags. During asynchronous controller setup, the worker can set\nHCI_UNCONFIGURED and clear HCI_SETUP between the two passes. A controller\nomitted from the allocation count can then become eligible for the fill\npass, causing an out-of-bounds write to rp-\u003eindex[].\n\nAllocate space for every device on hci_dev_list. Since list membership\ncannot change while hci_dev_list_lock is held, the response remains large\nenough regardless of flag transitions. The reported count and response\nlength still include only eligible unconfigured controllers."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - sendmsg() on a local PF_BLUETOOTH/BTPROTO_HCI socket bound to HCI_CHANNEL_CONTROL reaches hci_sock_sendmsg()-\u003ehci_mgmt_cmd()-\u003eread_unconf_index_list(). No over-the-air Bluetooth message supplies this management command or the corrupted data.\nAC:H - The overwrite requires the setup worker to set HCI_UNCONFIGURED and clear HCI_SETUP between read_unconf_index_list()\u0027s sizing and filling walks. An untrusted management-socket caller cannot initiate or synchronize that controller-setup transition, so success depends on external timing.\nPR:L - mgmt_handlers[] marks MGMT_OP_READ_UNCONF_INDEX_LIST with HCI_MGMT_UNTRUSTED, and hci_sock_bind() permits HCI_CHANNEL_CONTROL binding without CAP_NET_ADMIN. Therefore any local user can issue the zero-length command.\nUI:N - The attacker can repeatedly send the management command without another user opening data or approving an operation; asynchronous controller setup is system state rather than required user interaction.\nS:U - The allocation and rp-\u003eindex[] overwrite occur in read_unconf_index_list() within the host kernel heap, and no VM, IOMMU, or other security-authority boundary is crossed.\nC:H - When a newly eligible controller exceeds the allocation basis, rp-\u003eindex[count++] writes 16-bit IDs past the kmalloc buffer and corrupts adjacent kernel heap storage; exploitable heap corruption can expose arbitrary kernel data.\nI:H - rp-\u003eindex[count++] performs an out-of-bounds heap write for each newly eligible controller, allowing adjacent kernel objects to be modified and potentially enabling control-flow hijacking.\nA:H - The out-of-bounds writes can corrupt allocator or adjacent-object state and cause a kernel oops or panic, resulting in complete host availability loss."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-10-30T12:38:14.270Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/fa6f79bb0009406bb11e6912b53ab7c564d6f06b"
        },
        {
          "url": "https://git.kernel.org/stable/c/76dc7e0297f6f7ebefc36a69251e3f4a676d9853"
        },
        {
          "url": "https://git.kernel.org/stable/c/9c32455f490b960efccedd041c7aabb1a04c5cc4"
        },
        {
          "url": "https://git.kernel.org/stable/c/524e0450dd9a396f99a81b045219b0e2ea0dab57"
        },
        {
          "url": "https://git.kernel.org/stable/c/8ddf962c76432a10a6cb80042875cbc48a9c056b"
        },
        {
          "url": "https://git.kernel.org/stable/c/416546cd6a54e9b68f2b91bc680b1ee17dcd77a1"
        },
        {
          "url": "https://git.kernel.org/stable/c/2e8bba0360d1379bfa8da47c8f5dadbb10a3fba1"
        },
        {
          "url": "https://git.kernel.org/stable/c/b5dbb41b212c50c095a4dbee3017a84fe94f033b"
        }
      ],
      "title": "Bluetooth: mgmt: fix race in read_unconf_index_list()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-98456",
    "datePublished": "2026-10-18T15:15:05.909Z",
    "dateReserved": "2026-09-25T10:25:14.350Z",
    "dateUpdated": "2026-10-30T12:38:14.270Z",
    "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…