Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-10683

CVE-2026-10683: Synopsys DesignWare I2C Driver DoS Flaw

CVE-2026-10683 is a denial of service vulnerability in the Synopsys DesignWare I2C driver that causes the target function to malfunction. This article covers technical details, affected systems, and mitigation strategies.

Published:

CVE-2026-10683 Overview

CVE-2026-10683 affects the Synopsys DesignWare I2C driver (drivers/i2c/i2c_dw.c) in the Zephyr real-time operating system (RTOS) when operating in target/slave mode. The driver fails to enable the START_DET interrupt in i2c_dw_slave_register(), leaving the state-recovery path as dead code. As a result, a lost STOP interrupt or a legal WRITE-repeated-START-WRITE sequence permanently leaves the driver in the CMD_SEND state. The target function then stops invoking write_requested() for all subsequent write transactions until a reset occurs. The flaw maps to [CWE-835] (loop with unreachable exit condition) and yields a recoverable denial of service on the local board-level I2C bus.

Critical Impact

An I2C master sharing the physical bus can deliberately desynchronize the target driver, breaking consumer framing state such as MCTP-over-I2C until the peripheral is reset.

Affected Products

  • Zephyr RTOS drivers/i2c/i2c_dw.c (DesignWare I2C driver in target/slave mode)
  • Downstream consumers using MCTP-over-I2C on Zephyr
  • Embedded platforms integrating the Synopsys DesignWare I2C IP through Zephyr

Discovery Timeline

  • 2026-07-27 - CVE-2026-10683 published to the National Vulnerability Database (NVD)
  • 2026-07-27 - Last updated in NVD database

Technical Details for CVE-2026-10683

Vulnerability Analysis

The DesignWare I2C driver tracks target-mode transaction progress through the dw->state field. The rx_full interrupt handler gates the write_requested() callback on the condition dw->state != CMD_SEND. Only a STOP interrupt resets dw->state back to READY. A parallel recovery path exists inside i2c_dw_slave_read_clear_intr_bits() that would reset state on every bus (re)START, but the START_DET interrupt was never unmasked in i2c_dw_slave_register(). That recovery code therefore never runs, and the state machine has no way to leave CMD_SEND if the STOP event is missed.

Root Cause

The root cause is an incomplete interrupt-mask configuration. The write_intr_mask() call in i2c_dw_slave_register() omits DW_INTR_MASK_START_DET, so the hardware never signals repeated-START events to the handler that clears dw->state. This is a design/configuration flaw rather than a memory-safety issue.

Attack Vector

An attacker with access to the same physical I2C bus can issue a WRITE-repeated-START-WRITE sequence with the same direction, or induce a bus glitch that causes the STOP interrupt to be lost. Either path traps the target in CMD_SEND permanently. All subsequent write transactions fail to notify the upper layers, breaking framing state for consumers such as Management Component Transport Protocol (MCTP) over I2C. Impact is availability-only, recoverable by resetting the peripheral. No memory corruption occurs, because the in-tree consumer performs independent per-byte bounds checking.

c
// Patch: unmask START_DET so the state machine resets on every (re)START
 	dw->read_in_progress = false;
 	dw->slave_cfg = cfg;
 	ret = i2c_dw_set_slave_mode(dev, cfg->address);
-	write_intr_mask(DW_INTR_MASK_RX_FULL | DW_INTR_MASK_RD_REQ | DW_INTR_MASK_TX_ABRT |
-				DW_INTR_MASK_STOP_DET,
+	write_intr_mask(DW_INTR_MASK_RX_FULL | DW_INTR_MASK_RD_REQ |
+			DW_INTR_MASK_TX_ABRT | DW_INTR_MASK_STOP_DET |
+			DW_INTR_MASK_START_DET,
 			reg_base);

 	return ret;

Source: Zephyr commit 06e2053

Detection Methods for CVE-2026-10683

Indicators of Compromise

  • I2C target device stops responding to write requests while still acknowledging address phase on the bus.
  • Consumer protocols such as MCTP-over-I2C report persistent framing or sequence errors that only clear after a peripheral reset.
  • Firmware logs show rx_full interrupts firing without corresponding write_requested() callback invocations.

Detection Strategies

  • Instrument the I2C target driver to log transitions of dw->state and alert when the state remains in CMD_SEND across multiple transactions.
  • Correlate STOP and START_DET interrupt counters against completed target transactions to detect lost bus events.
  • Review board bring-up traces with a logic analyzer for WRITE-repeated-START-WRITE patterns that reproduce the hang.

Monitoring Recommendations

  • Track upper-layer protocol error counters (for example, MCTP packet drops) as a proxy for target-mode desynchronization.
  • Emit a watchdog event when the I2C target has not serviced a write callback within an expected interval.
  • Aggregate device health telemetry centrally so repeated peripheral resets tied to bus hangs surface as an operational pattern.

How to Mitigate CVE-2026-10683

Immediate Actions Required

  • Apply the upstream Zephyr fix that unmasks DW_INTR_MASK_START_DET in i2c_dw_slave_register().
  • Rebuild and reflash affected firmware images that use the DesignWare I2C target driver.
  • Audit board designs to confirm no untrusted device shares the I2C bus with sensitive target peripherals.

Patch Information

The fix is available in Zephyr commit 06e2053efe0e324d71cc29cdd95160fff643730a and documented in GHSA-fj9c-r5qw-3639. The patch adds DW_INTR_MASK_START_DET to the enabled interrupt mask so the existing recovery handler in i2c_dw_slave_read_clear_intr_bits() executes on every bus (re)START and resets dw->state.

Workarounds

  • Implement a firmware watchdog that resets the I2C peripheral when target-mode writes stall.
  • Restrict physical access to the I2C bus and validate all master devices connected to the same board segment.
  • Where feasible, defer target-mode usage until the patched firmware is deployed.
bash
# Fetch and apply the upstream patch in a Zephyr workspace
cd zephyr
git fetch origin
git cherry-pick 06e2053efe0e324d71cc29cdd95160fff643730a
west build -b <board> -p auto <app>

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.