CVE-2026-89571
High · 7.1CVSS
7.1
EPSS
0.2%
Published
Sep 11, 2026
CISA due date
—
Cloudanix analysis
A programming error in how the system handles certain hardware control commands on Linux machines can let a logged-in user crash the computer or read a little extra memory.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Low
- Impact
- Data Exposure
- Component
- OS kernel
- Class
- Buffer Overflow
- Remediation
- Patch
- Effort
- Medium
- Patch risk
- Low
What it actually does
Missing bounds check in CXL fwctl command dispatch allows user-controlled op_size to exceed the allocated in_len buffer, causing out-of-bounds read into the mailbox payload and potential unmapped memory access that oops the kernel.
Why it matters to the business
Local users on affected Linux systems with CXL hardware can trigger kernel crashes or limited information exposure, leading to denial of service and potential hardware communication integrity issues until patched.
How an attack unfolds
An attacker with local access submits a crafted fwctl RPC command where the fixed header plus op_size exceeds the copied input buffer; the unchecked op_size drives memcpy and subsequent mailbox operations that read past the allocation, sending corrupted data to the device or dereferencing unmapped memory.
How to fix it
Update to a kernel containing the dispatch-point bounds check that rejects requests whose fixed header plus op_size does not fit the copied-in buffer; rebuild and reboot with the corrected CXL feature code.
How to confirm the fix worked
Confirm the single dispatch point now performs the combined header-plus-op_size check against in_len before any memcpy or cxl_set_feature call; inspect kernel logs for absence of related oops and test with boundary-case fwctl commands.
Typical attack path
- Obtain local shell or process execution on target Linux system
- Locate or load CXL fwctl interface and prepare malicious command structure with small in_len and large op_size
- Invoke fwctl_cmd_rpc to trigger copy and dispatch into cxlctl_fw_rpc without size validation
- Cause OOB read into mailbox payload or unmapped memory resulting in kernel oops or device misbehavior
How to detect it
Search kernel logs and crash dumps for oops or panic entries referencing cxlctl_fw_rpc, fwctl_cmd_rpc, or CXL mailbox operations with size mismatch indicators; review audit logs for unusual fwctl or cxl feature ioctl usage from non-privileged processes.
What your security team should do
- Prioritize kernel upgrade on all systems exposing CXL hardware or fwctl interfaces
- Restrict local access to CXL management interfaces until patches are applied
- Monitor for kernel oops containing CXL or fwctl symbols as immediate post-patch validation
The record
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 <= sizeof(feat_in->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.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|