{"id":"CVE-2026-89571","title":"cxl/features: bound fwctl command payload to the input buffer","summary":"In the Linux kernel, the following vulnerability has been resolved:\n\ncxl/features: bound fwctl command payload to the input buffer\n\nfwctl_cmd_rpc() copies cmd->in_len bytes into inbuf = kvzalloc(cmd->in_len)\nand passes inbuf and in_len t…","severity":"high","cvss":7.1,"cvssVector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H","cvssSource":"cna","cwe":["CWE-125"],"vendor":"Linux","product":"Linux","affected":["Linux >= eb5dfcb9e36d0e46089fec777d911313c1876fa3 < 14d52c15d5d99477b20a2d61fe36f347080da6cd","Linux >= eb5dfcb9e36d0e46089fec777d911313c1876fa3 < d8957545fe96f7905791c937758ebfc1ae1e5b17","Linux >= eb5dfcb9e36d0e46089fec777d911313c1876fa3 < f687394af983df5660b6afae7e0d06969f3af206","Linux 6.15"],"published":"2026-09-11","updated":"2026-10-19","sourceUpdated":"2026-10-19T08:49:04.541Z","source":"CVEORG","sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-89571","references":[{"url":"https://git.kernel.org/stable/c/14d52c15d5d99477b20a2d61fe36f347080da6cd"},{"url":"https://git.kernel.org/stable/c/d8957545fe96f7905791c937758ebfc1ae1e5b17"},{"url":"https://git.kernel.org/stable/c/f687394af983df5660b6afae7e0d06969f3af206"},{"url":"https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-89571.json"},{"url":"https://access.redhat.com/security/cve/CVE-2026-89571"},{"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2532280"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-89571"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-89571"},{"url":"https://git.kernel.org/pub/scm/linux/security/vulns.git/plain/cve/published/2026/CVE-2026-89571.mbox"}],"tags":["cve.org","csaf","vex","red-hat"],"epss":0.00164,"epssPercentile":0.05572,"scores":{"cna":7.1,"vendor":5.5},"ingestedAt":"2026-09-14T15:23:07.474Z","slug":"CVE-2026-89571","body":"## Overview\n\nIn the Linux kernel, the following vulnerability has been resolved:\n\ncxl/features: bound fwctl command payload to the input buffer\n\nfwctl_cmd_rpc() copies cmd->in_len bytes into inbuf = kvzalloc(cmd->in_len)\nand passes inbuf and in_len to ->fw_rpc(). The CXL callback cxlctl_fw_rpc()\nignores in_len and never checks the user-controlled op_size against it.\n\ncxlctl_set_feature() bounds op_size only from below\n(op_size <= sizeof(feat_in->hdr)) and then reads op_size - sizeof(hdr)\nbytes from feat_in->feat_data via cxl_set_feature(). With a small in_len\nand a large op_size the first memcpy() already reads past the\nkvzalloc(in_len) buffer; the out-of-bounds bytes are placed in the mailbox\npayload and sent to the device, and a large enough op_size can walk into\nunmapped memory and oops the kernel. The Get paths pin op_size to a fixed\nsize but likewise read the input struct without checking in_len.\n\nReject, at the single dispatch point, any request whose fixed header plus\nop_size does not fit in the copied-in buffer. The lower-bound test guards\nthe subtraction and ensures op_size was copied in before it is read.\n\n## Affected\n\n- `Linux >= eb5dfcb9e36d0e46089fec777d911313c1876fa3 < 14d52c15d5d99477b20a2d61fe36f347080da6cd`\n- `Linux >= eb5dfcb9e36d0e46089fec777d911313c1876fa3 < d8957545fe96f7905791c937758ebfc1ae1e5b17`\n- `Linux >= eb5dfcb9e36d0e46089fec777d911313c1876fa3 < f687394af983df5660b6afae7e0d06969f3af206`\n- `Linux 6.15`\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.\n\n## Vendor advisories\n\n- **Red Hat VEX** · Moderate · updated 2026-09-18 · [vex](https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-89571.json)","depth":"twilight","depthScore":39,"depthScoreParts":{"impact":39.1,"likelihood":0,"exploitation":0,"ransomware":0},"changes":[{"seq":224708,"id":"CVE-2026-89571","ts":1792401483211,"field":"cvss","old":"5.5","new":"7.1"},{"seq":224707,"id":"CVE-2026-89571","ts":1792401483211,"field":"severity","old":"medium","new":"high"},{"seq":208097,"id":"CVE-2026-89571","ts":1789922708284,"field":"cvss","old":"4.4","new":"5.5"},{"seq":202877,"id":"CVE-2026-89571","ts":1789403732774,"field":"cvss","old":"7.1","new":"4.4"},{"seq":202876,"id":"CVE-2026-89571","ts":1789403732774,"field":"severity","old":"high","new":"medium"},{"seq":197918,"id":"CVE-2026-89571","ts":1789384320948,"field":"cvss","old":"4.4","new":"7.1"},{"seq":197917,"id":"CVE-2026-89571","ts":1789384320948,"field":"severity","old":"medium","new":"high"},{"seq":183459,"id":"CVE-2026-89571","ts":1789356675452,"field":"cvss","old":"7.1","new":"4.4"},{"seq":183458,"id":"CVE-2026-89571","ts":1789356675452,"field":"severity","old":"high","new":"medium"},{"seq":153386,"id":"CVE-2026-89571","ts":1789285350306,"field":"cvss","old":null,"new":"7.1"},{"seq":153385,"id":"CVE-2026-89571","ts":1789285350306,"field":"severity","old":"none","new":"high"},{"seq":147442,"id":"CVE-2026-89571","ts":1789270210925,"field":"cvss","old":null,"new":"4.4"},{"seq":147441,"id":"CVE-2026-89571","ts":1789270210925,"field":"severity","old":"none","new":"medium"},{"seq":109198,"id":"CVE-2026-89571","ts":1789183730693,"field":"cvss","old":null,"new":"4.4"},{"seq":109197,"id":"CVE-2026-89571","ts":1789183730693,"field":"severity","old":"none","new":"medium"}]}