ZeroHour

CVE-2026-89620

large

Heap buffer overflow in Linux kernel Intel THC QuickSPI HID driver

CVSS 3.1
7.8 high
EPSS
Published
()
Modified
AI analysis

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.

Affected
Linux kernel (HID intel-thc-hid intel-quickspi driver)
Estimated exposure
largeplausibly hundreds of thousands to low millions of touch-enabled systems, precise count unknown — The driver binds only to Intel THC QuickSPI touch controllers present on recent Intel client SoCs (Core Ultra-era laptops and tablets with SPI-attached touch panels), and no public install counts or internet-scan data exist for this…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

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 news

No ingested article mentions this CVE yet.