CVE-2026-89442
largeOff-by-one socket-ID check and NULL deref in Linux kernel Intel ISST ioctl
The Linux kernel's Intel Speed Select Technology (ISST) interface driver validates the user-supplied socket_id in the isst_if_clos_assoc() ioctl with a '>' comparison against topology_max_packages(), even though sst_inst[] is allocated with exactly that many entries, so a socket_id equal to topology_max_packages() indexes one element past the end of the array. Separately, an in-range socket_id whose sst_inst[] entry is NULL (a package with no bound TPMI SST instance) is dereferenced without a NULL check. A local attacker with low privileges who can open the ISST character device can pass such a socket_id, causing an out-of-bounds or NULL kernel pointer dereference in map_partition_power_domain_id() and the following power_domain_info access, which can crash the kernel or potentially corrupt kernel memory (CVSS 3.1 7.8, with high impact on confidentiality, integrity, and availability). Affected systems are Linux hosts running kernel code containing the pre-fix ISST TPMI interface implementation, i.e., Intel Xeon server platforms that expose Speed Select Technology via TPMI. No public proof of concept is known and the issue is not in CISA's KEV catalog.
What to do: Update to a kernel release that includes the upstream fix, which rejects socket_id >= topology_max_packages() and NULL sst_inst entries (mirroring get_instance()). Until patched, restrict access to the ISST character device (e.g., /dev/isst_interface) to root via udev rules or file permissions, and audit local unprivileged accounts on SST-capable Xeon hosts. No internet-facing exposure exists, so remediation can follow normal patching cycles.
| Linux kernel (platform/x86 ISST interface driver, isst_if_clos_assoc ioctl) | — |
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: platform/x86: ISST: Validate socket ID in clos_assoc ioctl isst_if_clos_assoc() validates the user-supplied socket_id with 'socket_id > topology_max_packages()', but isst_common.sst_inst[] is allocated with topology_max_packages() entries, so the valid index range is [0, topology_max_packages()). The '>' comparison lets socket_id == topology_max_packages() pass and index one entry past the array. In addition, isst_common.sst_inst[socket_id] is NULL for an in-range package that has no bound TPMI SST instance, and the pointer is used without a NULL check. Both the out-of-bounds entry and the NULL pointer are then dereferenced by map_partition_power_domain_id() and the following power_domain_info access. Reject socket_id >= topology_max_packages() and a NULL sst_inst, matching the checks already performed by get_instance().
- 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.