CVE-2026-14986: Out-of-bounds write in it51xxx I2C target FIFO ISR on oversized write transaction

Published Sep 14, 2026
·
Updated

The ITE it51xxx I2C driver, when operating as an I2C target (slave) in buffer mode (CONFIGI2CTARGET + CONFIGI2CTARGETBUFFERMODE), copies host-supplied write data into the fixed-size data->targetinbuffer inside its target FIFO interrupt handler targeti2cisrfifo() in drivers/i2c/i2citeit51xxx.c. The copy loop stores to targetinbuffer[i + data->windex] and only checks data->windex against sizeof(data->targetinbuffer) after the write has already completed, so the bounds check cannot prevent the overflow.

The running index data->windex accumulates count bytes on every FIFO-fill interrupt of an ongoing transaction and is reset to zero only on a STOP or timeout condition. An I2C host that streams a single write transaction longer than the buffer (default CONFIGI2CTARGETIT51XXXMAXBUFSIZE = 256 bytes) drives data->windex past the end of the buffer, and each subsequent host byte is written out of bounds into the adjacent data->targetoutbuffer and following static device data.

The trigger is a malicious or misbehaving I2C master on the same bus (for example a compromised application processor or a rogue device on an exposed I2C bus); no software privilege on the victim is required and the handler runs in the target's kernel/firmware context. Because both the written values and the overflow length are attacker-controlled, this is an out-of-bounds write that can crash the controller or be shaped toward code execution. The fix adds a pre-write bounds check in targeti2cfiforeadtobuf() that aborts and resets the FIFO before any out-of-bounds store.

Affected Software

2 affected components
it51xxx I2C driver (i2c_ite_it51xxx.c)
Linux kernel ITE it51xxx I2C target FIFO buffer mode

Event History

Sep 14, 2026
CVE Published
via MITRE·10:07 PM
Data Sourced
via MITRE·10:07 PM
DescriptionSeverityWeakness

Frequently Asked Questions

1

Which deployments are exposed?

Systems using the ITE it51xxx I2C driver as an I2C target in buffer mode are exposed when both CONFIG_I2C_TARGET and CONFIG_I2C_TARGET_BUFFER_MODE are enabled.

2

What does an attacker need to trigger the issue?

An attacker needs to act as, control, or compromise an I2C master on the same bus and send one continuous write transaction larger than the target input buffer. A rogue device on an exposed I2C bus or a compromised application processor are example attack sources.

3

How large must the write transaction be?

The default CONFIG_I2C_TARGET_IT51XXX_MAX_BUF_SIZE is 256 bytes. A single transaction exceeding the configured target input-buffer size causes subsequent bytes to be written beyond the buffer; the write index is reset only after a STOP condition or timeout.

4

What data can be affected by the overflow?

Bytes beyond target_in_buffer overwrite the adjacent target_out_buffer and following static device data. The vulnerable bounds check occurs after the write, so it does not prevent the out-of-bounds stores.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203