ZeroHour

CVE-2026-89571

niche

Out-of-bounds read in Linux kernel CXL fwctl command dispatch

CVSS 3.1
7.1 high
EPSS
Published
()
Modified
AI analysis

The Linux kernel's CXL fwctl RPC path fails to validate the user-controlled op_size against the length of the buffer copied in from userspace (in_len), allowing an out-of-bounds read past a kvzalloc'd input buffer. A local attacker with access to the fwctl interface can trigger the flaw by issuing a set-feature request with a small in_len but a large op_size; the out-of-bounds kernel memory bytes are copied into the CXL mailbox payload and sent to the device, and a large enough op_size can walk into unmapped memory and oops (crash) the kernel. This yields high confidentiality impact (kernel memory disclosure to the device) and high availability impact via denial of service, with no integrity impact. Affected systems are those running kernels containing the cxl/features fwctl code path with CXL-attached devices, and exploitation requires local access with privileges sufficient to reach the fwctl character device. No public proof of concept or exploitation in the wild is known, and the issue is not on the CISA KEV list.

What to do: Upgrade to a kernel release containing the upstream fix, which rejects at the single dispatch point any fwctl request whose fixed header plus op_size does not fit within the copied-in input buffer. As defense in depth, confirm that /dev/fwctl device nodes remain restricted to privileged users (the default), since exploitation requires local access through that interface. Review kernel logs for oopses or panics referencing fwctl/cxlctl_fw_rpc on hosts with CXL devices in use.

Affected
Linux kernel (cxl/features fwctl RPC, cxlctl_fw_rpc / fwctl_cmd_rpc)
Estimated exposure
nichelikely on the order of hundreds to low thousands of hosts worldwide — CXL fwctl support is a very recent, datacenter-oriented mainline kernel capability deployed on relatively few CXL-equipped servers, and the attack additionally requires local privileged access to the fwctl device node, so the practically…

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: cxl/features: bound fwctl command payload to the input buffer fwctl_cmd_rpc() copies cmd->in_len bytes into inbuf = kvzalloc(cmd->in_len) and passes inbuf and in_len to ->fw_rpc(). The CXL callback cxlctl_fw_rpc() ignores in_len and never checks the user-controlled op_size against it. cxlctl_set_feature() bounds op_size only from below (op_size hdr)) and then reads op_size - sizeof(hdr) bytes from feat_in->feat_data via cxl_set_feature(). With a small in_len and a large op_size the first memcpy() already reads past the kvzalloc(in_len) buffer; the out-of-bounds bytes are placed in the mailbox payload and sent to the device, and a large enough op_size can walk into unmapped memory and oops the kernel. The Get paths pin op_size to a fixed size but likewise read the input struct without checking in_len. Reject, at the single dispatch point, any request whose fixed header plus op_size does not fit in the copied-in buffer. The lower-bound test guards the subtraction and ensures op_size was copied in before it is read.

Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H

In the news

No ingested article mentions this CVE yet.