{
  "affected": [
    {
      "ranges": [
        {
          "events": [
            {
              "introduced": "998e447f443f138c90faa6ff3845082af419070e"
            },
            {
              "fixed": "a644b8df94966b672ac656577df98bd01bc88393"
            },
            {
              "fixed": "22d419db7f9a01bea22cfcf66774d2b2fd4bb354"
            },
            {
              "fixed": "060fa7592bdc043a93b6b7870f5b8551206d315d"
            }
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "type": "GIT"
        }
      ]
    },
    {
      "package": {
        "ecosystem": "Linux",
        "name": "Kernel"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "6.15.0"
            },
            {
              "fixed": "6.18.52"
            }
          ],
          "type": "ECOSYSTEM"
        },
        {
          "events": [
            {
              "introduced": "6.19.0"
            },
            {
              "fixed": "7.2.6"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "database_specific": {
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/90xxx/CVE-2026-90089.json"
  },
  "details": "In the Linux kernel, the following vulnerability has been resolved:\n\nBluetooth: btnxpuart: Validate the FW dump header length\n\nnxp_process_fw_dump() pulls the ACL header off the frame and then reads\nseq_num and buf_len from a struct nxp_fw_dump_hdr placed at skb-\u003edata,\nwithout checking that the ACL payload is long enough to contain it.\n\nh4_recv_buf() collects HCI_ACL_HDR_SIZE bytes of header followed by the\nnumber of payload bytes named in that header, so skb-\u003elen is 4 + dlen\nwith dlen supplied by the controller and possibly smaller than the 8\nbyte dump header, or zero. A short frame with connection handle 0xfff\ntherefore reads both fields from beyond the received data.\n\nBeyond the read itself, buf_len is what terminates a dump: a value of\nzero makes the driver call hci_devcd_complete() and reset the\ncontroller, so a truncated frame can end a dump early.\n\nUse skb_pull_data() to validate and pull the FW dump header before\naccessing its fields. Warn and reject the chunk if the header is\ntruncated.",
  "id": "CVE-2026-90089",
  "modified": "2026-09-20T11:30:35.901146254Z",
  "published": "2026-09-17T16:06:04.201Z",
  "references": [
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/060fa7592bdc043a93b6b7870f5b8551206d315d"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/22d419db7f9a01bea22cfcf66774d2b2fd4bb354"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/a644b8df94966b672ac656577df98bd01bc88393"
    },
    {
      "type": "ADVISORY",
      "url": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/90xxx/CVE-2026-90089.json"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-90089"
    },
    {
      "type": "PACKAGE",
      "url": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
    }
  ],
  "schema_version": "1.9.0",
  "severity": [
    {
      "score": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H",
      "type": "CVSS_V3"
    }
  ],
  "summary": "Bluetooth: btnxpuart: Validate the FW dump header length"
}