CVE-2026-89620
largeHeap buffer overflow in Linux kernel Intel THC QuickSPI HID driver
The Linux kernel's intel-thc-hid intel-quickspi driver builds output HID reports in a heap buffer (qsdev->report_buf) sized to the device-descriptor-derived max_report_len of only a few hundred bytes, but write_cmd_to_txdma() copies caller-supplied report data without validating that it fits. Because the quickspi low-level HID driver does not set a max_buffer_size, the HID core's default cap of 16384 bytes reaches the driver unbounded, so a local attacker with access to the hidraw device can trigger the overflow via a SET_REPORT/SET_FEATURE ioctl carrying an oversized, fully attacker-controlled report. Successful exploitation corrupts adjacent heap memory and, given the CVSS 7.8 impact ratings (confidentiality, integrity and availability all high), plausibly enables kernel memory corruption and local privilege escalation to root. Affected systems are those running kernels that include the intel-quickspi driver together with an Intel THC touch controller attached over SPI (typical of recent touch-enabled Intel client platforms). No public proof of concept is known and the issue is not on the CISA KEV list.
What to do: Apply a kernel update containing the upstream fix that records the report_buf allocation size (including the output report header) and rejects oversized reports before copying. Verify whether you are exposed by checking if the intel-quickspi/THC driver is loaded or bound (e.g., lsmod and the hidraw device nodes for the touch controller) on touch-enabled Intel hardware. As defense-in-depth, restrict access to /dev/hidraw* nodes (udev rules or group membership) so untrusted local users cannot issue SET_REPORT/SET_FEATURE ioctls to the touch controller.
| Linux kernel (HID intel-thc-hid intel-quickspi driver) | — |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
In the Linux kernel, the following vulnerability has been resolved: HID: intel-thc-hid: intel-quickspi: validate report size before copy write_cmd_to_txdma() builds an output report in qsdev->report_buf, a heap buffer allocated in quickspi_alloc_report_buf() to the device-descriptor derived max_report_len (a few hundred bytes for a touch controller). It copies the caller-supplied report into that buffer: memcpy(write_buf->content, report_buf, report_buf_len); The HID core caps a report at HID_MAX_BUFFER_SIZE (16384) by default, and quickspi_hid_ll_driver does not set max_buffer_size, so the length reaches the driver unbounded. A hidraw SET_REPORT/SET_FEATURE ioctl carrying a report larger than max_report_len therefore overflows report_buf with attacker-controlled length and content. Record the report_buf allocation size and reject reports that do not fit before copying, matching the equivalent guard in the intel-quicki2c sibling (quicki2c_init_write_buf()) and the hid-goodix-spi fix. write_cmd_to_txdma() writes the output report header ahead of the content in the same buffer, so size the allocation to cover the header as well. That keeps the added bound from rejecting a maximum-sized report.
- Vector
- CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
In the news0 stories
No ingested article mentions this CVE yet.