Skip to main content

Linux Kernel CVE-2026-52948

| EUVDEUVD-2026-38816 MEDIUM
Integer Overflow or Wraparound (CWE-190)
2026-06-24 Linux GHSA-rj5f-9xf7-69h7
5.5
CVSS 3.1 · NVD
Share

Severity by source

NVD PRIMARY
5.5 MEDIUM
AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
vuln.today AI
5.5 MEDIUM

Local access with low privilege required to open /dev/i2c-N; no network path exists; impact is availability-only (persistent SMBus DoS), with no confidentiality or integrity effects.

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

Primary rating from NVD.

CVSS VectorNVD

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

Lifecycle Timeline

5
Analysis Generated
Jul 22, 2026 - 20:57 vuln.today
CVSS changed
Jul 14, 2026 - 17:07 NVD
5.5 (MEDIUM)
Patch available
Jun 24, 2026 - 18:02 EUVD
CVE Published
Jun 24, 2026 - 16:26 nvd
MEDIUM 5.5
CVE Published
Jun 24, 2026 - 16:26 cve.org
UNKNOWN (no severity yet)

DescriptionNVD

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

i2c: dev: prevent integer overflow in I2C_TIMEOUT ioctl

While fuzzing with Syzkaller, a persistent schedule_timeout: wrong timeout value warning was observed, accompanied by SMBus controller state machine corruption.

The I2C_TIMEOUT ioctl accepts a user-provided timeout in multiples of 10 ms. The user argument is checked against INT_MAX, but it is subsequently multiplied by 10 before being passed to msecs_to_jiffies().

A malicious user can pass a large value (e.g., 429496729) that passes the arg > INT_MAX check but overflows when multiplied by 10. This results in a truncated 32-bit unsigned value that bypasses the internal (int)m < 0 check in msecs_to_jiffies().

The truncated value is then assigned to client->adapter->timeout (a signed 32-bit int), which is reinterpreted as a negative number. When passed to wait_for_completion_timeout(), this negative value undergoes sign extension to a 64-bit unsigned long, triggering the schedule_timeout warning and causing premature returns. This leaves the SMBus state machine in an unrecoverable state, constituting a local Denial of Service (DoS).

Fix this by bounding the user argument to INT_MAX / 10.

[wsa: move the comment as well]

AnalysisAI

Integer overflow in the Linux kernel i2c character device driver allows a local low-privileged user to corrupt the SMBus controller state machine and cause a persistent Denial of Service. By supplying a crafted large timeout value (e.g., 429496729) to the I2C_TIMEOUT ioctl that passes the INT_MAX bounds check but overflows to a negative integer after multiplication by 10, an attacker forces wait_for_completion_timeout() to receive a sign-extended negative 64-bit value, triggering schedule_timeout kernel warnings and leaving the SMBus adapter in an unrecoverable state. No public exploit has been identified at time of analysis and EPSS is 0.18% (8th percentile), reflecting low mass-exploitation risk; however, the flaw is mechanically straightforward on any system granting unprivileged access to /dev/i2c-* nodes.

Technical ContextAI

The affected component is the Linux kernel i2c character device driver (drivers/i2c/i2c-dev.c), which exposes I2C bus adapters to userspace as /dev/i2c-N character devices configurable via ioctls. CWE-190 (Integer Overflow or Wraparound) is the precise root cause: the I2C_TIMEOUT ioctl accepts a user-supplied 32-bit argument representing timeout in units of 10 ms and validates it only against INT_MAX, but then multiplies by 10 before passing the product to msecs_to_jiffies(). A value such as 429496729 passes the guard (it is below INT_MAX) but overflows to a small unsigned value after multiplication, bypassing the internal '(int)m < 0' check inside msecs_to_jiffies(). The corrupted value is stored in client->adapter->timeout as a signed 32-bit int, interpreted as a large negative number. When that negative value is later passed to wait_for_completion_timeout(), C sign extension produces a huge 64-bit unsigned long, triggering the schedule_timeout kernel warning and causing premature completion returns. This leaves the SMBus state machine in an unrecoverable hung state. The fix bounds the user argument to INT_MAX / 10 before multiplication. Affected CPE: cpe:2.3:a:linux:linux:*.

RemediationAI

The primary fix is to upgrade to a patched Linux kernel version within the applicable stable branch: 5.10.259, 5.15.210, 6.1.176, 6.6.143, 6.12.94, 6.18.36, or 7.0.13, or the 7.1 release. Upstream patch commits are available at https://git.kernel.org/stable/c/e9ffd5f5050fbb199d270a85614cd27ebed6fbac, https://git.kernel.org/stable/c/0b88ecfbc9dc33b4db8836c37b50cf174e6c0691, https://git.kernel.org/stable/c/943e318eedbeaeea08ece3f5dd44c982f4ed2ef5, and the additional stable-tree commits listed in the CVE references. If immediate kernel upgrade is not possible, restrict access to /dev/i2c-* character device nodes so only root or a dedicated privileged group can open them via 'chmod 600 /dev/i2c-*' or targeted udev rules - this eliminates the unprivileged access prerequisite. Note that this workaround will break any userspace i2c tooling (e.g., i2c-tools, sensor daemons) run without root; assess application dependencies before applying. Distribution-specific kernel updates from Red Hat, Ubuntu, Debian, SUSE, and others should be monitored for backported fixes, as upstream stable commits are the only confirmed source in available data.

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
Image SLES15-SP7-Azure-3P Image SLES15-SP7-Azure-Basic Image SLES15-SP7-Azure-Standard Image SLES15-SP7-HPC-Azure Affected
Image SLES15-SP7-BYOS-Azure Image SLES15-SP7-BYOS-GCE Image SLES15-SP7-CHOST-BYOS-Aliyun Image SLES15-SP7-CHOST-BYOS-Azure Image SLES15-SP7-CHOST-BYOS-EC2 Image SLES15-SP7-CHOST-BYOS-GCE Image SLES15-SP7-CHOST-BYOS-GDC Image SLES15-SP7-CHOST-BYOS-SAP-CCloud Image SLES15-SP7-EC2 Image SLES15-SP7-EC2-ECS-HVM Image SLES15-SP7-GCE Image SLES15-SP7-HPC-BYOS-Azure Image SLES15-SP7-HPC-BYOS-EC2 Image SLES15-SP7-HPC-BYOS-GCE Image SLES15-SP7-Hardened-BYOS-Azure Image SLES15-SP7-Hardened-BYOS-EC2 Image SLES15-SP7-Hardened-BYOS-GCE Image SLES15-SP7-SAPCAL-Azure Image SLES15-SP7-SAPCAL-EC2 Image SLES15-SP7-SAPCAL-GCE Affected
Image SLES15-SP7-SAP-Azure Image SLES15-SP7-SAP-Azure-3P Image SLES15-SP7-SAP-BYOS-Azure Image SLES15-SP7-SAP-BYOS-EC2 Image SLES15-SP7-SAP-BYOS-GCE Image SLES15-SP7-SAP-EC2 Image SLES15-SP7-SAP-GCE Image SLES15-SP7-SAP-Hardened-Azure Image SLES15-SP7-SAP-Hardened-BYOS-Azure Image SLES15-SP7-SAP-Hardened-BYOS-EC2 Image SLES15-SP7-SAP-Hardened-BYOS-GCE Image SLES15-SP7-SAP-Hardened-GCE Affected
SUSE Linux Enterprise Desktop 15 SP7 Fixed
SUSE Linux Enterprise High Availability Extension 15 SP7 Fixed

Share

CVE-2026-52948 vulnerability details – vuln.today

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