{"id":"CVE-2026-90089","title":"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_…","summary":"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_…","severity":"high","cvss":7.1,"cvssVector":"CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H","vendor":"Linux","product":"Linux","affected":["Linux >= 998e447f443f138c90faa6ff3845082af419070e < a644b8df94966b672ac656577df98bd01bc88393","Linux >= 998e447f443f138c90faa6ff3845082af419070e < 22d419db7f9a01bea22cfcf66774d2b2fd4bb354","Linux >= 998e447f443f138c90faa6ff3845082af419070e < 060fa7592bdc043a93b6b7870f5b8551206d315d","Linux 6.15"],"published":"2026-09-17","updated":"2026-09-18","sourceUpdated":"2026-09-18T18:17:41.060","source":"NVD","sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-90089","references":[{"url":"https://git.kernel.org/stable/c/060fa7592bdc043a93b6b7870f5b8551206d315d","label":"416baaa9-dc9f-4396-8d5f-8c081fb06d67"},{"url":"https://git.kernel.org/stable/c/22d419db7f9a01bea22cfcf66774d2b2fd4bb354","label":"416baaa9-dc9f-4396-8d5f-8c081fb06d67"},{"url":"https://git.kernel.org/stable/c/a644b8df94966b672ac656577df98bd01bc88393","label":"416baaa9-dc9f-4396-8d5f-8c081fb06d67"}],"tags":["nvd","cve.org"],"epss":0.00288,"epssPercentile":0.21623,"ingestedAt":"2026-09-17T16:21:47.893Z","slug":"CVE-2026-90089","body":"## Overview\n\nIn 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->data,\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->len 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.\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.","depth":"twilight","depthScore":39,"depthScoreParts":{"impact":39.1,"likelihood":0.1,"exploitation":0,"ransomware":0},"changes":[{"seq":207109,"id":"CVE-2026-90089","ts":1789757332669,"field":"cvss","old":null,"new":"7.1"},{"seq":207108,"id":"CVE-2026-90089","ts":1789757332669,"field":"severity","old":"none","new":"high"}]}