CVE-2026-90255 (GCVE-0-2026-90255)

Vulnerability from cvelistv5 – Published: 2026-09-17 16:07 – Updated: 2026-09-18 17:54
VLAI
Title
Bluetooth: hci_conn: fix the SCO setup context lifetime
Summary
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: hci_conn: fix the SCO setup context lifetime hci_setup_sync() queues a conn_handle_t with a NULL destroy callback, so the context is only freed if hci_enhanced_setup_sync() actually runs. An entry that is cancelled instead is leaked, as _hci_cmd_sync_cancel_entry() does not release entry->data when there is no destroy callback, and hci_cmd_sync_clear() cancels every pending entry when the controller is unregistered. The context also stores a bare hci_conn pointer, so the connection can be freed while the work is queued. The dequeue in hci_conn_del() does not cover it either, as it matches on entry->data == conn and entry->data is the wrapper here. Same problem as commit 2f5d635ad590 ("Bluetooth: hci_sync: hold conn in hci_connect_acl/le_sync() callbacks"). Hold the connection and release both from a destroy callback. The submission failure path drops both, since hci_cmd_sync_submit() does not call the destroy callback when it fails to queue.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: e07a06b4eb417f5271d33ce2240e93c62d98b7b4 , < 37cfec41365c826d5496ef5d00c9e215eee53aa2 (git)
Affected: e07a06b4eb417f5271d33ce2240e93c62d98b7b4 , < 9a2ba69cebe3fc5a3d4fa8eaaad3c42862723c27 (git)
Affected: e07a06b4eb417f5271d33ce2240e93c62d98b7b4 , < a661de0ee29d0915c5e924edf91d2be2b4d35bae (git)
Affected: e07a06b4eb417f5271d33ce2240e93c62d98b7b4 , < c1fe3c74a89a7749cba3caa0dd91236049c66116 (git)
Affected: e07a06b4eb417f5271d33ce2240e93c62d98b7b4 , < 4d7b1c834d2775b73c65e4888e01f5af8b477fe9 (git)
Affected: e07a06b4eb417f5271d33ce2240e93c62d98b7b4 , < 42de40abe25db9211107af8896d0fd741f10648d (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.1
Unaffected: 0 , < 6.1 (semver)
Unaffected: 6.1.188 , ≤ 6.1.* (semver)
Unaffected: 6.6.157 , ≤ 6.6.* (semver)
Unaffected: 6.12.110 , ≤ 6.12.* (semver)
Unaffected: 6.18.52 , ≤ 6.18.* (semver)
Unaffected: 7.2.6 , ≤ 7.2.* (semver)
Unaffected: 7.3-rc1 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "net/bluetooth/hci_conn.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "37cfec41365c826d5496ef5d00c9e215eee53aa2",
              "status": "affected",
              "version": "e07a06b4eb417f5271d33ce2240e93c62d98b7b4",
              "versionType": "git"
            },
            {
              "lessThan": "9a2ba69cebe3fc5a3d4fa8eaaad3c42862723c27",
              "status": "affected",
              "version": "e07a06b4eb417f5271d33ce2240e93c62d98b7b4",
              "versionType": "git"
            },
            {
              "lessThan": "a661de0ee29d0915c5e924edf91d2be2b4d35bae",
              "status": "affected",
              "version": "e07a06b4eb417f5271d33ce2240e93c62d98b7b4",
              "versionType": "git"
            },
            {
              "lessThan": "c1fe3c74a89a7749cba3caa0dd91236049c66116",
              "status": "affected",
              "version": "e07a06b4eb417f5271d33ce2240e93c62d98b7b4",
              "versionType": "git"
            },
            {
              "lessThan": "4d7b1c834d2775b73c65e4888e01f5af8b477fe9",
              "status": "affected",
              "version": "e07a06b4eb417f5271d33ce2240e93c62d98b7b4",
              "versionType": "git"
            },
            {
              "lessThan": "42de40abe25db9211107af8896d0fd741f10648d",
              "status": "affected",
              "version": "e07a06b4eb417f5271d33ce2240e93c62d98b7b4",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "net/bluetooth/hci_conn.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.1"
            },
            {
              "lessThan": "6.1",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.188",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.157",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.110",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.52",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.6",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3-rc1",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.188",
                  "versionStartIncluding": "6.1",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.157",
                  "versionStartIncluding": "6.1",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.110",
                  "versionStartIncluding": "6.1",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.52",
                  "versionStartIncluding": "6.1",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.6",
                  "versionStartIncluding": "6.1",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc1",
                  "versionStartIncluding": "6.1",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: hci_conn: fix the SCO setup context lifetime\n\nhci_setup_sync() queues a conn_handle_t with a NULL destroy callback, so\nthe context is only freed if hci_enhanced_setup_sync() actually runs. An\nentry that is cancelled instead is leaked, as\n_hci_cmd_sync_cancel_entry() does not release entry-\u003edata when there is\nno destroy callback, and hci_cmd_sync_clear() cancels every pending entry\nwhen the controller is unregistered.\n\nThe context also stores a bare hci_conn pointer, so the connection can be\nfreed while the work is queued. The dequeue in hci_conn_del() does not\ncover it either, as it matches on entry-\u003edata == conn and entry-\u003edata is\nthe wrapper here. Same problem as commit 2f5d635ad590 (\"Bluetooth:\nhci_sync: hold conn in hci_connect_acl/le_sync() callbacks\").\n\nHold the connection and release both from a destroy callback. The\nsubmission failure path drops both, since hci_cmd_sync_submit() does not\ncall the destroy callback when it fails to queue."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 8.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:A - hci_setup_sync() is reached from hci_sco_setup() on ACL HCI Connection Complete (hci_conn_complete_evt) and from hci_sync_conn_complete_evt retrying Enhanced Setup Synchronous Connection on remote error statuses (0x1a, 0x1c, 0x1e, 0x1f); those HCI events arrive over Bluetooth radio, scored Adjacent.\nAC:L - An attacker queues hci_enhanced_setup_sync via hci_setup_sync() (sco_connect-\u003ehci_connect_sco-\u003ehci_sco_setup, or Sync Conn Complete retries) then frees that SCO hci_conn with hci_conn_del (socket close, hci_disconn_complete_evt, or hci_setup_sync_conn_status). Dequeue matches entry-\u003edata==conn but data is the conn_handle_t wrapper, so both sides of the race are attacker-controlled.\nPR:N - A radio-adjacent peer needs no Linux account: HFP/PipeWire stacks cause the host to call hci_setup_sync, and the peer\u0027s Disconnection Complete or Synchronous Connection Complete events run hci_conn_del. Locally sco_sock_create() has no capability check (AF_BLUETOOTH is init_net only).\nUI:N - No extra victim action at exploit time: Bluetooth audio stacks automatically open outgoing SCO for a connected HFP/headset, and a local attacker uses their own BTPROTO_SCO sockets rather than inducing another user to mount or open a file.\nS:U - The use-after-free corrupts kernel heap (struct hci_conn) in the host Bluetooth stack and can escalate privileges in that same kernel authority; it does not cross a VM, guest-to-host, or IOMMU boundary.\nC:H - hci_enhanced_setup_sync() reads conn_handle-\u003econn, kfree()s the wrapper, then uses conn (conn-\u003ecodec, conn-\u003eparent, conn-\u003eattempt) after only a pointer-compare hci_conn_valid() check, so a freed or slab-reused hci_conn yields arbitrary kernel reads.\nI:H - The same callback writes conn-\u003estate, conn-\u003eout, and conn-\u003eattempt and builds HCI_OP_ENHANCED_SETUP_SYNC_CONN from freed codec fields; struct hci_conn has cleanup/connect_cfm_cb pointers, so slab reuse gives a kernel write and control-flow primitive.\nA:H - Dereferencing a freed hci_conn from hci_cmd_sync_work on req_workqueue causes a kernel oops or panic; UAF availability is High even without full exploitation. Cancelled cmd_sync entries also leak conn_handle_t because destroy was NULL."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-18T17:54:11.196Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/37cfec41365c826d5496ef5d00c9e215eee53aa2"
        },
        {
          "url": "https://git.kernel.org/stable/c/9a2ba69cebe3fc5a3d4fa8eaaad3c42862723c27"
        },
        {
          "url": "https://git.kernel.org/stable/c/a661de0ee29d0915c5e924edf91d2be2b4d35bae"
        },
        {
          "url": "https://git.kernel.org/stable/c/c1fe3c74a89a7749cba3caa0dd91236049c66116"
        },
        {
          "url": "https://git.kernel.org/stable/c/4d7b1c834d2775b73c65e4888e01f5af8b477fe9"
        },
        {
          "url": "https://git.kernel.org/stable/c/42de40abe25db9211107af8896d0fd741f10648d"
        }
      ],
      "title": "Bluetooth: hci_conn: fix the SCO setup context lifetime",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-90255",
    "datePublished": "2026-09-17T16:07:54.775Z",
    "dateReserved": "2026-09-11T19:38:34.796Z",
    "dateUpdated": "2026-09-18T17:54:11.196Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-90255",
      "date": "2026-09-25",
      "epss": "0.00403",
      "percentile": "0.31787"
    },
    "microsoft_vex": {
      "current_release_date": "2026-09-24T01:33:17.000Z",
      "cve": "CVE-2026-90255",
      "id": "msrc_CVE-2026-90255",
      "initial_release_date": "2026-09-19T01:12:01.000Z",
      "product_status:fixed": "1",
      "product_status:known_affected": "2",
      "source": "Microsoft CSAF VEX",
      "status": "final",
      "title": "Bluetooth: hci_conn: fix the SCO setup context lifetime",
      "url": "https://msrc.microsoft.com/csaf/vex/2026/msrc_cve-2026-90255.json",
      "version": "4"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "net/bluetooth/hci_conn.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "37cfec41365c826d5496ef5d00c9e215eee53aa2",
                    "status": "affected",
                    "version": "e07a06b4eb417f5271d33ce2240e93c62d98b7b4",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "9a2ba69cebe3fc5a3d4fa8eaaad3c42862723c27",
                    "status": "affected",
                    "version": "e07a06b4eb417f5271d33ce2240e93c62d98b7b4",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "a661de0ee29d0915c5e924edf91d2be2b4d35bae",
                    "status": "affected",
                    "version": "e07a06b4eb417f5271d33ce2240e93c62d98b7b4",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "c1fe3c74a89a7749cba3caa0dd91236049c66116",
                    "status": "affected",
                    "version": "e07a06b4eb417f5271d33ce2240e93c62d98b7b4",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "4d7b1c834d2775b73c65e4888e01f5af8b477fe9",
                    "status": "affected",
                    "version": "e07a06b4eb417f5271d33ce2240e93c62d98b7b4",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "42de40abe25db9211107af8896d0fd741f10648d",
                    "status": "affected",
                    "version": "e07a06b4eb417f5271d33ce2240e93c62d98b7b4",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "net/bluetooth/hci_conn.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.1"
                  },
                  {
                    "lessThan": "6.1",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.1.*",
                    "status": "unaffected",
                    "version": "6.1.188",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.6.*",
                    "status": "unaffected",
                    "version": "6.6.157",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.110",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.52",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.2.*",
                    "status": "unaffected",
                    "version": "7.2.6",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.3-rc1",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: hci_conn: fix the SCO setup context lifetime\n\nhci_setup_sync() queues a conn_handle_t with a NULL destroy callback, so\nthe context is only freed if hci_enhanced_setup_sync() actually runs. An\nentry that is cancelled instead is leaked, as\n_hci_cmd_sync_cancel_entry() does not release entry-\u003edata when there is\nno destroy callback, and hci_cmd_sync_clear() cancels every pending entry\nwhen the controller is unregistered.\n\nThe context also stores a bare hci_conn pointer, so the connection can be\nfreed while the work is queued. The dequeue in hci_conn_del() does not\ncover it either, as it matches on entry-\u003edata == conn and entry-\u003edata is\nthe wrapper here. Same problem as commit 2f5d635ad590 (\"Bluetooth:\nhci_sync: hold conn in hci_connect_acl/le_sync() callbacks\").\n\nHold the connection and release both from a destroy callback. The\nsubmission failure path drops both, since hci_cmd_sync_submit() does not\ncall the destroy callback when it fails to queue."
          }
        ],
        "id": "CVE-2026-90255",
        "lastModified": "2026-09-18T18:17:51.010",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "ADJACENT_NETWORK",
                "availabilityImpact": "HIGH",
                "baseScore": 8.8,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "NONE",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 2.8,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-09-17T17:17:21.853",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/37cfec41365c826d5496ef5d00c9e215eee53aa2"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/42de40abe25db9211107af8896d0fd741f10648d"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/4d7b1c834d2775b73c65e4888e01f5af8b477fe9"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/9a2ba69cebe3fc5a3d4fa8eaaad3c42862723c27"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/a661de0ee29d0915c5e924edf91d2be2b4d35bae"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/c1fe3c74a89a7749cba3caa0dd91236049c66116"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…