Skip to main content

Linux Kernel EUVDEUVD-2026-46011

| CVE-2026-64191 HIGH
Out-of-bounds Read (CWE-125)
2026-07-20 Linux GHSA-cc9h-5xhh-h7j7
7.8
CVSS 3.1 · Vendor: Linux
Share

Severity by source

Vendor (Linux) PRIMARY
7.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
7.0 HIGH

AC:H because exploitation requires the non-default i2c-stub module to be loaded with chip_addr=; PR:L because /dev/i2c-* access requires i2c group membership.

3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:L/AC:H/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
SUSE
6.7 MEDIUM
AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
Red Hat
7.0 HIGH
qualitative

Primary rating from Vendor (Linux).

CVSS VectorVendor: Linux

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

6
Metadata Corrected
Sep 16, 2026 - 08:40 vuln.today
tag: Information Disclosure removed
Analysis Generated
Jul 27, 2026 - 07:30 vuln.today
CVSS changed
Jul 27, 2026 - 05:22 NVD
7.8 (HIGH)
Patch available
Jul 20, 2026 - 18:18 EUVD
CVE Published
Jul 20, 2026 - 16:27 cve.org
UNKNOWN (no severity yet)
CVE Published
Jul 20, 2026 - 16:27 cve.org
HIGH 7.8

DescriptionCVE.org

In the Linux kernel, the following vulnerability has been resolved:

i2c: stub: Reject I2C block transfers with invalid length

The I2C_SMBUS_I2C_BLOCK_DATA case in stub_xfer() uses data->block[0] as the transfer length. The existing check only clamps it to avoid overrunning the chip->words[256] register array, but does not validate it against I2C_SMBUS_BLOCK_MAX (32), which is the limit of the union i2c_smbus_data.block buffer (34 bytes total). The driver is a development/test tool (CONFIG_I2C_STUB=m, not built by default) that must be loaded with a chip_addr= parameter.

A local user with access to /dev/i2c-* can issue an I2C_SMBUS ioctl with I2C_SMBUS_I2C_BLOCK_DATA and data->block[0] > 32, causing stub_xfer() to read or write past the end of the union i2c_smbus_data.block buffer:

BUG: KASAN: stack-out-of-bounds in stub_xfer (drivers/i2c/i2c-stub.c:223) Read of size 1 at addr ffff88800abcfd92 by task exploit/81 Call Trace: <TASK> stub_xfer (drivers/i2c/i2c-stub.c:223) __i2c_smbus_xfer (drivers/i2c/i2c-core-smbus.c:593) i2c_smbus_xfer (drivers/i2c/i2c-core-smbus.c:536) i2cdev_ioctl_smbus (drivers/i2c/i2c-dev.c:391) i2cdev_ioctl (drivers/i2c/i2c-dev.c:478) __x64_sys_ioctl (fs/ioctl.c:583) do_syscall_64 (arch/x86/entry/syscall_64.c:94) entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130) </TASK>

The bug exists because i2c-stub implements .smbus_xfer directly, bypassing the I2C_SMBUS_BLOCK_MAX validation in i2c_smbus_xfer_emulated(). The I2C_SMBUS_BLOCK_DATA case in the same function correctly validates against I2C_SMBUS_BLOCK_MAX, but the I2C_SMBUS_I2C_BLOCK_DATA case does not.

Fix by rejecting transfers with data->block[0] == 0 or data->block[0] > I2C_SMBUS_BLOCK_MAX with -EINVAL, consistent with both the I2C_SMBUS_BLOCK_DATA case in the same function and the I2C_SMBUS_I2C_BLOCK_DATA validation in i2c_smbus_xfer_emulated().

AnalysisAI

Stack out-of-bounds read/write in the Linux kernel i2c-stub driver allows a local user with access to /dev/i2c-* to corrupt kernel stack memory by issuing an I2C_SMBUS ioctl with an oversized block length. The i2c-stub driver's stub_xfer() implements .smbus_xfer directly, bypassing the I2C_SMBUS_BLOCK_MAX (32-byte) length validation applied in the generic i2c_smbus_xfer_emulated() path, meaning data->block[0] values above 32 are accepted and used as a loop bound, reading or writing past the end of the 34-byte union i2c_smbus_data.block buffer onto the kernel stack. No public exploit has been identified at time of analysis and EPSS is 0.17%, but the KASAN trace in the description confirms the crash path is reachable.

Technical ContextAI

The i2c-stub driver (CONFIG_I2C_STUB=m, drivers/i2c/i2c-stub.c) is a software-emulated I2C/SMBus adapter intended for development and testing. It must be explicitly loaded as a module and requires a chip_addr= parameter to instantiate. When a userspace process calls ioctl(I2C_SMBUS) on /dev/i2c-*, the kernel dispatches through i2cdev_ioctl_smbus() → i2c_smbus_xfer() → the adapter's .smbus_xfer callback, which for i2c-stub is stub_xfer(). The I2C_SMBUS_I2C_BLOCK_DATA transaction type uses data->block[0] as the byte count; stub_xfer() bounds this only against the chip->words[256] register array, but never against I2C_SMBUS_BLOCK_MAX (32). Since union i2c_smbus_data.block is 34 bytes total (1-byte length + 32-byte data + 1 slack), a length > 32 causes the loop to walk off the end of that stack-allocated union, producing a CWE-125 out-of-bounds read and potentially a CWE-787 out-of-bounds write. The CPE cpe:2.3:a:linux:linux:*:*:*:*:*:*:*:* covers all Linux kernel versions from the introduction of the stub driver at commit 4710317891e4824ce1510a6b5066abbd3e917750 (Linux 2.6.33 era) through the affected stable branches.

RemediationAI

Vendor-released patch: apply the kernel stable updates for your branch - 5.10.260, 5.15.211, 6.1.177, 6.6.144, 6.12.95, 6.18.37, 7.0.14, or 7.1 as appropriate (upstream fix commits at git.kernel.org referenced above). Ubuntu users should apply USN-8726-1 or USN-8727-1. If patching is not immediately possible, the primary compensating control is to ensure the i2c-stub module is not loaded: verify with 'lsmod | grep i2c_stub' and, if loaded, remove it with 'modprobe -r i2c_stub'. On systems where it is not needed (virtually all production systems), blacklist it by adding 'blacklist i2c_stub' to /etc/modprobe.d/. Additionally, restrict access to /dev/i2c-* devices (typically via the i2c group) to trusted users only; removing non-admin users from the i2c group eliminates the PR:L prerequisite even if the module is present.

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 16.0 Not-Affected

Share

EUVD-2026-46011 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy