CVE-2026-10678: memory-safety in zephyrproject zephyr
The MCTP-over-I2C+GPIO target binding in Zephyr (subsys/pmci/mctp/mctp_i2c_gpio_target.c) processes pseudo-register writes from an I2C bus master byte-by-byte in mctp_i2c_gpio_target_write_received() without validating the order or the receive buffer. In the affected versions the MCTP_I2C_GPIO_RX_MSG_ADDR (data) handler dereferences and writes through b->rx_pkt without checking that the receive buffer was allocated: a controller that selects the data register and writes a byte without first sending the length register (which is what allocates the buffer) causes a write of an attacker-chosen byte through a NULL/unallocated mctp_pktbuf pointer (i.e. into a small attacker-advanceable offset above address 0), producing memory corruption or a hard fault. The same handler also performs a write-then-check bounds test, allowing a one-byte heap overflow at data[255] when more than 255 data bytes are sent. Because the I2C target callback is invoked with raw bytes supplied by whatever device is the bus master and the binding performs no authentication, a malicious or malfunctioning controller on the bus can trigger these without any prior protocol state, leading to memory corruption and/or denial of service on the target device. The vulnerable code was introduced when the I2C+GPIO target binding was added and shipped in Zephyr v4.3.0 and v4.4.0. The fix defers allocation to the first data byte with a NULL check, treats a missing length as a zero-sized packet rejected by libmctp, and moves the bounds check before the store.
AI Analysis
Technical Summary
The MCTP-over-I2C+GPIO target binding in Zephyr (subsys/pmci/mctp/mctp_i2c_gpio_target.c) processes pseudo-register writes from an I2C bus master byte-by-byte without validating the order or ensuring the receive buffer is allocated before use. Specifically, the MCTP_I2C_GPIO_RX_MSG_ADDR handler writes through a potentially NULL or unallocated buffer pointer if the length register is not sent before the data register, causing memory corruption or a hard fault. Additionally, a one-byte heap overflow can occur when more than 255 data bytes are sent due to a write-then-check bounds test. Since the binding performs no authentication and accepts raw bytes from the bus master, a malicious or malfunctioning controller can exploit this without prior protocol state. The vulnerability affects Zephyr versions 4.3.0 and 4.4.0 and was fixed by deferring buffer allocation until the first data byte, rejecting zero-length packets, and moving bounds checks before writes.
Potential Impact
An attacker controlling the I2C bus master can cause memory corruption or a hard fault on the target device running the vulnerable Zephyr versions. This can lead to denial of service or potentially other impacts due to heap overflow or NULL pointer dereference. The vulnerability does not require authentication or prior protocol state, increasing the attack surface on affected devices.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. The vendor has described a fix that defers buffer allocation until the first data byte, rejects zero-length packets, and moves bounds checks before writes. Until an official patch or update is available, restrict access to the I2C bus to trusted controllers to prevent malicious exploitation.
CVE-2026-10678: memory-safety in zephyrproject zephyr
Description
The MCTP-over-I2C+GPIO target binding in Zephyr (subsys/pmci/mctp/mctp_i2c_gpio_target.c) processes pseudo-register writes from an I2C bus master byte-by-byte in mctp_i2c_gpio_target_write_received() without validating the order or the receive buffer. In the affected versions the MCTP_I2C_GPIO_RX_MSG_ADDR (data) handler dereferences and writes through b->rx_pkt without checking that the receive buffer was allocated: a controller that selects the data register and writes a byte without first sending the length register (which is what allocates the buffer) causes a write of an attacker-chosen byte through a NULL/unallocated mctp_pktbuf pointer (i.e. into a small attacker-advanceable offset above address 0), producing memory corruption or a hard fault. The same handler also performs a write-then-check bounds test, allowing a one-byte heap overflow at data[255] when more than 255 data bytes are sent. Because the I2C target callback is invoked with raw bytes supplied by whatever device is the bus master and the binding performs no authentication, a malicious or malfunctioning controller on the bus can trigger these without any prior protocol state, leading to memory corruption and/or denial of service on the target device. The vulnerable code was introduced when the I2C+GPIO target binding was added and shipped in Zephyr v4.3.0 and v4.4.0. The fix defers allocation to the first data byte with a NULL check, treats a missing length as a zero-sized packet rejected by libmctp, and moves the bounds check before the store.
CVSS v3.1
Score 8.1high
Affected software
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The MCTP-over-I2C+GPIO target binding in Zephyr (subsys/pmci/mctp/mctp_i2c_gpio_target.c) processes pseudo-register writes from an I2C bus master byte-by-byte without validating the order or ensuring the receive buffer is allocated before use. Specifically, the MCTP_I2C_GPIO_RX_MSG_ADDR handler writes through a potentially NULL or unallocated buffer pointer if the length register is not sent before the data register, causing memory corruption or a hard fault. Additionally, a one-byte heap overflow can occur when more than 255 data bytes are sent due to a write-then-check bounds test. Since the binding performs no authentication and accepts raw bytes from the bus master, a malicious or malfunctioning controller can exploit this without prior protocol state. The vulnerability affects Zephyr versions 4.3.0 and 4.4.0 and was fixed by deferring buffer allocation until the first data byte, rejecting zero-length packets, and moving bounds checks before writes.
Potential Impact
An attacker controlling the I2C bus master can cause memory corruption or a hard fault on the target device running the vulnerable Zephyr versions. This can lead to denial of service or potentially other impacts due to heap overflow or NULL pointer dereference. The vulnerability does not require authentication or prior protocol state, increasing the attack surface on affected devices.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. The vendor has described a fix that defers buffer allocation until the first data byte, rejects zero-length packets, and moves bounds checks before writes. Until an official patch or update is available, restrict access to the I2C bus to trusted controllers to prevent malicious exploitation.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- zephyr
- Date Reserved
- 2026-06-02T15:26:08.472Z
- Cvss Version
- 3.1
- State
- PUBLISHED
- Remediation Level
- null
Threat ID: 6a5fe6ba9c2644c7f8cb00c9
Added to database: 07/21/2026, 21:38:02 UTC
Last enriched: 07/22/2026, 10:07:14 UTC
Last updated: 07/31/2026, 19:22:57 UTC
Views: 9
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.