KernelScan.io

HIGH Introduced in 4.20

ncsi PayloadLength OOB

CVE-2026-74694

CVSS 7.1 / 10.0 KernelScan AI

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

01

In the Linux kernel, the following vulnerability has been resolved: net/ncsi: fix heap OOB read in NCSI_CMD_SEND_CMD payload length ncsi_send_cmd_nl() takes the number of bytes to copy from the attacker-controlled ncsi_pkt_hdr.length field of the in-band packet header, while the source buffer is the NCSI_ATTR_DATA netlink attribute whose readable size is nla_len() - sizeof(ncsi_pkt_hdr). The two length sources are never cross-checked: only nla_len() >= sizeof(struct ncsi_pkt_hdr) is enforced. With hdr->length set larger than the attribute payload (up to 65535 against at most 2032 readable bytes), ncsi_cmd_handler_oem() copies past the end of the netlink attribute buffer with unsafe_memcpy(), leaking up to ~64KB of kernel heap memory into the transmitted NCSI command packet. The destination skb is sized by the declared payload, so the write side does not overflow - this is a pure OOB read / information leak, reachable with CAP_NET_ADMIN on systems with a registered NCSI device (e.g. OpenBMC on Aspeed BMC SoCs, where NET_NCSI=y is standard). Reject commands whose declared payload extends past the end of the data attribute. The issue was found by the autokbug dynamic kernel fuzzer at Tencent Yunding Lab.

02

Engine v0.6.0

Risk summary

A local attacker with CAP_NET_ADMIN (obtainable via user namespaces) can trigger an out-of-bounds heap read of up to ~64KB in the NCSI netlink command path, leaking kernel heap memory into a response packet they can read back. The bug only affects systems with a registered NCSI device, which is typical of BMC hardware such as Aspeed SoCs running OpenBMC. The leaked data could aid further exploitation such as KASLR bypass.

Affectednet/ncsi/ncsi-netlink.c (NCSI netlink interface)

Vulnerability analysis

The NCSI netlink command interface accepts a payload length from an attacker-controlled field embedded in the in-band packet header, but never checks it against the actual size of the data buffer supplied via the netlink attribute. When the declared length is larger than the real buffer, the kernel copies past the end of the attribute, reading up to roughly 64 KB of adjacent kernel heap memory and placing it into the outgoing NCSI command packet — which the caller can then read back as a response. The fix adds a simple bounds check that rejects any command whose declared payload length exceeds the remaining bytes in the data attribute. The vulnerable path is reachable locally through a generic netlink socket by any process holding CAP_NET_ADMIN, a capability that can be acquired inside an unprivileged user namespace; however, a registered NCSI device must exist, which in practice limits exposure to systems with NCSI-capable hardware such as BMC SoCs running OpenBMC.

03

BranchIntroducedFixed inPatch commit
6.184.206.18.4502226af69362
5.154.205.15.21667c72b8ef63d
6.14.206.1.1834489b4a17892
6.64.206.6.15243c7d0a69177
6.124.206.12.104b5231ad0b376
mainline4.207.2afa58b738491
7.14.207.1.93a60b5af75ab
5.104.205.10.265e60afa01d35f
cip/5.104.205.10.268-cip77e60afa01d35f
cip/5.10-rt4.205.10.268-cip77-rt34e60afa01d35f
cip/6.14.206.1.187-cip604489b4a17892
cip/6.124.206.12.104-cip30b5231ad0b376