CVE-2026-63945 (GCVE-0-2026-63945)

Vulnerability from cvelistv5 – Published: 2026-07-19 14:55 – Updated: 2026-08-05 12:37
VLAI
Title
Bluetooth: ISO: serialize iso_sock_clear_timer with socket lock
Summary
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: ISO: serialize iso_sock_clear_timer with socket lock iso_sock_close() calls iso_sock_clear_timer() before acquiring lock_sock(sk). iso_sock_clear_timer() reads iso_pi(sk)->conn twice without the socket lock held: if (!iso_pi(sk)->conn) return; cancel_delayed_work(&iso_pi(sk)->conn->timeout_work); Concurrently, iso_conn_del() executes under lock_sock(sk) and calls iso_chan_del(), which sets iso_pi(sk)->conn to NULL and may result in the final reference to the connection being dropped: CPU0 CPU1 ---- ---- iso_sock_clear_timer() if (conn != NULL) ... lock_sock(sk) iso_chan_del() iso_pi(sk)->conn = NULL cancel_delayed_work(conn) /* NULL deref or UAF */ iso_pi(sk)->conn is not stable across the unlock window, causing a NULL pointer dereference or use-after-free. Serialize iso_sock_clear_timer() with the socket lock by moving it inside lock_sock()/release_sock(), matching the pattern used in iso_conn_del() and all other call sites.
Assigner
Impacted products
Vendor Product Version
Linux Linux Affected: ccf74f2390d60a2f9a75ef496d2564abb478f46a , < d9cbf7144ec589a3f0cc91f74a1a1af2d2b14afa (git)
Affected: ccf74f2390d60a2f9a75ef496d2564abb478f46a , < 35f68f36d9883d56dec21cf85f7556d4657fc393 (git)
Affected: ccf74f2390d60a2f9a75ef496d2564abb478f46a , < 996c2104d0726a8fe584f85b3d6327197374a348 (git)
Affected: ccf74f2390d60a2f9a75ef496d2564abb478f46a , < bc08c15746f25f41dd0508b25780d1e84acbb2ef (git)
Affected: ccf74f2390d60a2f9a75ef496d2564abb478f46a , < 51cb9dcfdf9a1bccf312ab2ae4b62db629f7dcd5 (git)
Affected: ccf74f2390d60a2f9a75ef496d2564abb478f46a , < 4b5f8e608749b7e8fa386c6e4301cf9272595859 (git)
Create a notification for this product.
Linux Linux Affected: 6.0
Unaffected: 0 , < 6.0 (semver)
Unaffected: 6.1.176 , ≤ 6.1.* (semver)
Unaffected: 6.6.143 , ≤ 6.6.* (semver)
Unaffected: 6.12.93 , ≤ 6.12.* (semver)
Unaffected: 6.18.35 , ≤ 6.18.* (semver)
Unaffected: 7.0.12 , ≤ 7.0.* (semver)
Unaffected: 7.1 , ≤ * (original_commit_for_fix)
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "net/bluetooth/iso.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "d9cbf7144ec589a3f0cc91f74a1a1af2d2b14afa",
              "status": "affected",
              "version": "ccf74f2390d60a2f9a75ef496d2564abb478f46a",
              "versionType": "git"
            },
            {
              "lessThan": "35f68f36d9883d56dec21cf85f7556d4657fc393",
              "status": "affected",
              "version": "ccf74f2390d60a2f9a75ef496d2564abb478f46a",
              "versionType": "git"
            },
            {
              "lessThan": "996c2104d0726a8fe584f85b3d6327197374a348",
              "status": "affected",
              "version": "ccf74f2390d60a2f9a75ef496d2564abb478f46a",
              "versionType": "git"
            },
            {
              "lessThan": "bc08c15746f25f41dd0508b25780d1e84acbb2ef",
              "status": "affected",
              "version": "ccf74f2390d60a2f9a75ef496d2564abb478f46a",
              "versionType": "git"
            },
            {
              "lessThan": "51cb9dcfdf9a1bccf312ab2ae4b62db629f7dcd5",
              "status": "affected",
              "version": "ccf74f2390d60a2f9a75ef496d2564abb478f46a",
              "versionType": "git"
            },
            {
              "lessThan": "4b5f8e608749b7e8fa386c6e4301cf9272595859",
              "status": "affected",
              "version": "ccf74f2390d60a2f9a75ef496d2564abb478f46a",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "net/bluetooth/iso.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.0"
            },
            {
              "lessThan": "6.0",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.176",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.143",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.93",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.35",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.0.*",
              "status": "unaffected",
              "version": "7.0.12",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.1",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.176",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.143",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.93",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.35",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.0.12",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: ISO: serialize iso_sock_clear_timer with socket lock\n\niso_sock_close() calls iso_sock_clear_timer() before acquiring\nlock_sock(sk).\n\niso_sock_clear_timer() reads iso_pi(sk)-\u003econn twice without the\nsocket lock held:\n\n    if (!iso_pi(sk)-\u003econn)\n        return;\n    cancel_delayed_work(\u0026iso_pi(sk)-\u003econn-\u003etimeout_work);\n\nConcurrently, iso_conn_del() executes under lock_sock(sk) and calls\niso_chan_del(), which sets iso_pi(sk)-\u003econn to NULL and may result in\nthe final reference to the connection being dropped:\n\n    CPU0                         CPU1\n    ----                         ----\n    iso_sock_clear_timer()\n      if (conn != NULL) ...      lock_sock(sk)\n                                   iso_chan_del()\n                                   iso_pi(sk)-\u003econn = NULL\n      cancel_delayed_work(conn)  /* NULL deref or UAF */\n\niso_pi(sk)-\u003econn is not stable across the unlock window, causing a\nNULL pointer dereference or use-after-free.\n\nSerialize iso_sock_clear_timer() with the socket lock by moving it\ninside lock_sock()/release_sock(), matching the pattern used in\niso_conn_del() and all other call sites."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The buggy path is exclusively `iso_sock_close()` calling `iso_sock_clear_timer()` without the socket lock, reachable only via local socket teardown (`close()`/`release()` on `BTPROTO_ISO`). The concurrent `iso_conn_del()` leg can be driven by adjacent Bluetooth HCI disconnect events, but adjacent access alone cannot reach the unlocked call site.\nAC:L - The attacker controls both sides of the race: a local thread can close the ISO socket while concurrently triggering or awaiting an HCI disconnect (locally initiated or from an adjacent Bluetooth peer), and can repeat the attempt until the window is hit.\nPR:L - Creating and closing `AF_BLUETOOTH`/`BTPROTO_ISO` sockets requires no kernel capabilities (`iso_sock_create()` has no `CAP_*` check); any unprivileged local process in the initial network namespace with Bluetooth access can reach the vulnerable code.\nUI:N - Exploitation does not require victim interaction when the attacker runs local code that opens an ISO socket and deliberately races `close()` against a Bluetooth disconnect; no pairing prompt or user action beyond attacker-controlled setup is needed.\nS:U - Impact is confined to kernel memory corruption and crash/privilege-escalation primitives within the same kernel security authority; there is no VM, sandbox, or IOMMU boundary crossing.\nC:H - The commit documents both NULL pointer dereference and use-after-free on `iso_conn`; UAF on a freed `iso_conn` structure gives attacker-influenced access to kernel heap memory and can be leveraged for information disclosure.\nI:H - Use-after-free on `iso_conn` via `cancel_delayed_work(\u0026conn-\u003etimeout_work)` on freed memory is heap corruption with a function-pointer-bearing work struct, enabling spray-based arbitrary write and potential control-flow hijacking.\nA:H - The race produces kernel NULL dereference or use-after-free in softirq/workqueue context, which can oops or panic the host; UAF in connection teardown is independently availability-impacting even before full exploitation."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:37:32.019Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/d9cbf7144ec589a3f0cc91f74a1a1af2d2b14afa"
        },
        {
          "url": "https://git.kernel.org/stable/c/35f68f36d9883d56dec21cf85f7556d4657fc393"
        },
        {
          "url": "https://git.kernel.org/stable/c/996c2104d0726a8fe584f85b3d6327197374a348"
        },
        {
          "url": "https://git.kernel.org/stable/c/bc08c15746f25f41dd0508b25780d1e84acbb2ef"
        },
        {
          "url": "https://git.kernel.org/stable/c/51cb9dcfdf9a1bccf312ab2ae4b62db629f7dcd5"
        },
        {
          "url": "https://git.kernel.org/stable/c/4b5f8e608749b7e8fa386c6e4301cf9272595859"
        }
      ],
      "title": "Bluetooth: ISO: serialize iso_sock_clear_timer with socket lock",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-63945",
    "datePublished": "2026-07-19T14:55:39.859Z",
    "dateReserved": "2026-07-19T07:54:57.022Z",
    "dateUpdated": "2026-08-05T12:37:32.019Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-63945",
      "date": "2026-08-11",
      "epss": "0.0016",
      "percentile": "0.05583"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-63945\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-07-19T16:17:13.107\",\"lastModified\":\"2026-07-27T17:44:23.777\",\"vulnStatus\":\"Awaiting Analysis\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nBluetooth: ISO: serialize iso_sock_clear_timer with socket lock\\n\\niso_sock_close() calls iso_sock_clear_timer() before acquiring\\nlock_sock(sk).\\n\\niso_sock_clear_timer() reads iso_pi(sk)-\u003econn twice without the\\nsocket lock held:\\n\\n    if (!iso_pi(sk)-\u003econn)\\n        return;\\n    cancel_delayed_work(\u0026iso_pi(sk)-\u003econn-\u003etimeout_work);\\n\\nConcurrently, iso_conn_del() executes under lock_sock(sk) and calls\\niso_chan_del(), which sets iso_pi(sk)-\u003econn to NULL and may result in\\nthe final reference to the connection being dropped:\\n\\n    CPU0                         CPU1\\n    ----                         ----\\n    iso_sock_clear_timer()\\n      if (conn != NULL) ...      lock_sock(sk)\\n                                   iso_chan_del()\\n                                   iso_pi(sk)-\u003econn = NULL\\n      cancel_delayed_work(conn)  /* NULL deref or UAF */\\n\\niso_pi(sk)-\u003econn is not stable across the unlock window, causing a\\nNULL pointer dereference or use-after-free.\\n\\nSerialize iso_sock_clear_timer() with the socket lock by moving it\\ninside lock_sock()/release_sock(), matching the pattern used in\\niso_conn_del() and all other call sites.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"net/bluetooth/iso.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"ccf74f2390d60a2f9a75ef496d2564abb478f46a\",\"lessThan\":\"d9cbf7144ec589a3f0cc91f74a1a1af2d2b14afa\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"ccf74f2390d60a2f9a75ef496d2564abb478f46a\",\"lessThan\":\"35f68f36d9883d56dec21cf85f7556d4657fc393\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"ccf74f2390d60a2f9a75ef496d2564abb478f46a\",\"lessThan\":\"996c2104d0726a8fe584f85b3d6327197374a348\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"ccf74f2390d60a2f9a75ef496d2564abb478f46a\",\"lessThan\":\"bc08c15746f25f41dd0508b25780d1e84acbb2ef\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"ccf74f2390d60a2f9a75ef496d2564abb478f46a\",\"lessThan\":\"51cb9dcfdf9a1bccf312ab2ae4b62db629f7dcd5\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"ccf74f2390d60a2f9a75ef496d2564abb478f46a\",\"lessThan\":\"4b5f8e608749b7e8fa386c6e4301cf9272595859\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"net/bluetooth/iso.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.0\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.0\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.1.176\",\"lessThanOrEqual\":\"6.1.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.6.143\",\"lessThanOrEqual\":\"6.6.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.12.93\",\"lessThanOrEqual\":\"6.12.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.18.35\",\"lessThanOrEqual\":\"6.18.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.0.12\",\"lessThanOrEqual\":\"7.0.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.1\",\"lessThanOrEqual\":\"*\",\"versionType\":\"original_commit_for_fix\",\"status\":\"unaffected\"}]}]}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":7.8,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":5.9}]},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/35f68f36d9883d56dec21cf85f7556d4657fc393\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/4b5f8e608749b7e8fa386c6e4301cf9272595859\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/51cb9dcfdf9a1bccf312ab2ae4b62db629f7dcd5\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/996c2104d0726a8fe584f85b3d6327197374a348\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/bc08c15746f25f41dd0508b25780d1e84acbb2ef\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/d9cbf7144ec589a3f0cc91f74a1a1af2d2b14afa\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-07-22T03:08:07+00:00",
      "cve": "CVE-2026-63945",
      "id": "CVE-2026-63945",
      "initial_release_date": "2026-07-19T00:00:00+00:00",
      "product_status:known_affected": "184",
      "product_status:known_not_affected": "90",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: Bluetooth: ISO: serialize iso_sock_clear_timer with socket lock",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-63945.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-08-10T16:25:03Z",
      "cve": "CVE-2026-63945",
      "id": "CVE-2026-63945",
      "initial_release_date": "2026-07-21T13:03:00Z",
      "product_status:first_fixed": "98",
      "product_status:known_affected": "78",
      "product_status:known_not_affected": "220",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-63945",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-63945.json",
      "version": "4"
    }
  }
}



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…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Loading…