
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-64191 is a stack out-of-bounds read/write vulnerability in the Linux kernel's i2c-stub driver (drivers/i2c/i2c-stub.c), caused by insufficient validation of the transfer length in I2C_SMBUS_I2C_BLOCK_DATA transactions. A local user with access to /dev/i2c-* devices can trigger the bug by issuing a crafted I2C_SMBUS ioctl with a block length exceeding 32 bytes, causing the kernel to read or write past the end of the union i2c_smbus_data.block buffer. The vulnerability was published on July 20, 2026, and affects the Linux kernel from version 2.6.33 onward; fixed versions include 5.10.260, 5.15.211, 6.1.177, 6.6.144, 6.12.95, 6.18.37, 7.0.14, and 7.1+. The CVSS category is estimated as Medium (GitHub Advisory, Feedly).
The root cause is improper input validation (CWE class: out-of-bounds read/write) in the stub_xfer() function within drivers/i2c/i2c-stub.c. The I2C_SMBUS_I2C_BLOCK_DATA case uses data->block[0] as the transfer length and only clamps it to prevent overrunning the chip->words[256] register array, but does not enforce the I2C_SMBUS_BLOCK_MAX limit of 32 bytes — the actual boundary of the union i2c_smbus_data.block buffer (34 bytes total). Because i2c-stub implements .smbus_xfer directly, it bypasses the I2C_SMBUS_BLOCK_MAX validation present in i2c_smbus_xfer_emulated(), which correctly validates the I2C_SMBUS_BLOCK_DATA case. Exploitation requires the i2c-stub kernel module to be loaded (it is not built by default; CONFIG_I2C_STUB=m) with a chip_addr= parameter, and the attacker must have read/write access to a /dev/i2c-* device node (GitHub Advisory).
Successful exploitation can result in kernel stack out-of-bounds memory access, leading to information disclosure (reading sensitive kernel stack data) or a kernel crash (denial of service). Because the affected driver is a development/test stub not loaded in production by default, the practical impact is limited to systems where i2c-stub has been explicitly loaded. Privilege escalation to kernel-level code execution is theoretically possible depending on what data is overwritten, but no such scenario has been publicly demonstrated (GitHub Advisory, Feedly).
i2c-stub kernel module loaded (lsmod | grep i2c_stub) with a chip_addr= parameter, and that the attacker has read/write access to a /dev/i2c-* device node./dev/i2c-N device file corresponding to the stub adapter (e.g., fd = open("/dev/i2c-0", O_RDWR)).i2c_smbus_ioctl_data structure with read_write, command, size = I2C_SMBUS_I2C_BLOCK_DATA, and set data->block[0] to a value greater than 32 (e.g., 33–255) to exceed the I2C_SMBUS_BLOCK_MAX boundary.ioctl(fd, I2C_SMBUS, &args) to trigger stub_xfer(), causing it to read or write past the end of the union i2c_smbus_data.block buffer on the kernel stack.dmesg) entries containing BUG: KASAN: stack-out-of-bounds in stub_xfer or similar KASAN reports referencing drivers/i2c/i2c-stub.c:223.stub_xfer → __i2c_smbus_xfer → i2c_smbus_xfer → i2cdev_ioctl_smbus → i2cdev_ioctl → __x64_sys_ioctl.exploit) issuing ioctl syscalls against /dev/i2c-* devices, particularly from non-privileged or unexpected user accounts.i2c-stub module on production systems where it is not expected (/sys/module/i2c_stub/ or lsmod output).Apply the upstream kernel patches available for the following stable branches: 5.10.260, 5.15.211, 6.1.177, 6.6.144, 6.12.95, 6.18.37, 7.0.14, and 7.1+. The fix rejects I2C_SMBUS_I2C_BLOCK_DATA transfers where data->block[0] == 0 or data->block[0] > I2C_SMBUS_BLOCK_MAX with -EINVAL. As a workaround on systems where the i2c-stub module is not required, unload it (rmmod i2c_stub) and blacklist it to prevent automatic loading. Additionally, restrict access to /dev/i2c-* device nodes to only trusted users or processes (GitHub Advisory).
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."