Skip to main content

Zephyr RTOS CVE-2026-10678

| EUVDEUVD-2026-46447 HIGH
NULL Pointer Dereference (CWE-476)
2026-07-21 zephyr
8.1
CVSS 3.1 · Vendor: zephyr
Share

Severity by source

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

I2C-bus adjacency gives AV:A; no auth or prior state gives PR:N/AC:L; attacker-chosen writes and hard faults give I:H/A:H with no data disclosure (C:N).

3.1 AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
4.0 AV:A/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (zephyr).

CVSS VectorVendor: zephyr

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

Lifecycle Timeline

3
Source Code Evidence Fetched
Jul 21, 2026 - 22:07 vuln.today
Analysis Generated
Jul 21, 2026 - 22:07 vuln.today
CVE Published
Jul 21, 2026 - 21:30 cve.org
HIGH 8.1

DescriptionCVE.org

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.

AnalysisAI

Memory corruption in Zephyr RTOS v4.3.0 and v4.4.0 lets any device acting as the I2C bus master corrupt an adjacent target device through the unauthenticated MCTP-over-I2C+GPIO target binding. By selecting the data pseudo-register and writing a byte before sending the length register, an attacker triggers a write through an unallocated (NULL) mctp_pktbuf pointer, and a separate write-then-check bug permits a one-byte heap overflow past data[255]; both yield memory corruption or a hard fault. No public exploit identified at time of analysis, and it is not on CISA KEV, but a vendor patch and security advisory are available.

Technical ContextAI

The affected component is Zephyr's Platform Management Component Intelligence (PMCI) stack, specifically the MCTP (Management Component Transport Protocol) transport binding that carries MCTP packets over I2C using a GPIO signal, implemented in subsys/pmci/mctp/mctp_i2c_gpio_target.c. The target exposes pseudo-registers (a length register that calls mctp_pktbuf_alloc() to allocate a receive buffer, and a data register that stores incoming bytes) and processes bus-master writes byte-by-byte in mctp_i2c_gpio_target_write_received(). The root cause maps to CWE-476 (NULL Pointer Dereference): the data handler dereferences b->rx_pkt and writes b->rx_pkt->data[b->rx_idx] without confirming the buffer was ever allocated, so if the length register is never written, rx_pkt is NULL and the store lands at a small, attacker-advanceable offset above address 0. A second defect is an out-of-bounds write (write-then-check ordering) that overflows data[255] by one byte. The commit adds an rx_exp_len field, defers allocation to the first data byte with a NULL check, treats a missing length as a zero-sized packet that libmctp rejects, and moves the bounds check before the store.

RemediationAI

Apply the upstream fix from commit 9e23364261a2188c171d734d6947e02ee2a9510f (https://github.com/zephyrproject-rtos/zephyr/commit/9e23364261a2188c171d734d6947e02ee2a9510f), which defers packet-buffer allocation to the first data byte behind a NULL check, treats a missing length register as a zero-sized packet rejected by libmctp, and moves the bounds check before the store; track the Zephyr advisory GHSA-pmwm-5rcm-39rr for the tagged patched release, since patch data indicates a vendor fix is available but a released patched version tag is not independently confirmed in the provided data. Because the fix currently references a commit rather than a confirmed tagged release, rebuild affected firmware from a Zephyr tree that includes this commit rather than assuming a specific version number. Where firmware cannot be updated immediately, compensating controls should focus on the I2C fabric: ensure only trusted, vetted devices share the bus with the vulnerable target (physically or by bus topology), and if the MCTP-over-I2C+GPIO target functionality is not required, disable/exclude that binding from the build to remove the attack surface entirely - the trade-off is loss of MCTP management transport on that bus. There is no purely software workaround on the target side short of the code fix, since the flaw is triggered by raw bytes from the bus master.

More in Zephyr

View all
CVE-2023-4260 CRITICAL POC
10.0 Sep 27

Potential off-by-one buffer overflow vulnerability in the Zephyr fuse file system. Rated critical severity (CVSS 10.0),

CVE-2023-5055 CRITICAL POC
9.8 Nov 21

Possible variant of CVE-2021-3434 in function le_ecred_reconf_req. Rated critical severity (CVSS 9.8), this vulnerabilit

CVE-2023-4257 CRITICAL POC
9.8 Oct 13

Unchecked user input length in /subsys/net/l2/wifi/wifi_shell.c can cause buffer overflows. Rated critical severity (CVS

CVE-2023-3725 CRITICAL POC
9.8 Oct 06

Potential buffer overflow vulnerability in the Zephyr CAN bus subsystem. Rated critical severity (CVSS 9.8), this vulner

CVE-2021-3323 CRITICAL POC
9.8 Oct 12

Integer Underflow in 6LoWPAN IPHC Header Uncompression in Zephyr. Rated critical severity (CVSS 9.8), this vulnerability

CVE-2021-3625 CRITICAL POC
9.8 Oct 05

Buffer overflow in Zephyr USB DFU DNLOAD. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable

CVE-2021-3319 CRITICAL POC
9.8 Oct 05

DOS: Incorrect 802154 Frame Validation for Omitted Source / Dest Addresses. Rated critical severity (CVSS 9.8), this vul

CVE-2018-1000800 CRITICAL POC
9.8 Sep 06

zephyr-rtos version 1.12.0 contains a NULL base pointer reference vulnerability in sys_ring_buf_put(), sys_ring_buf_get(

CVE-2023-4264 CRITICAL POC
9.6 Sep 27

Potential buffer overflow vulnerabilities n the Zephyr Bluetooth subsystem. Rated critical severity (CVSS 9.6), this vul

CVE-2026-1678 CRITICAL POC
9.4 Mar 05

Buffer overflow in Zephyr RTOS dns_unpack_name() function causing OOB writes. PoC available.

CVE-2024-1638 CRITICAL POC
9.1 Feb 19

The documentation specifies that the BT_GATT_PERM_READ_LESC and BT_GATT_PERM_WRITE_LESC defines for a Bluetooth characte

CVE-2023-5753 HIGH POC
8.8 Oct 25

Potential buffer overflows in the Bluetooth subsystem due to asserts being disabled in /subsys/bluetooth/host/hci_core.c

Share

CVE-2026-10678 vulnerability details – vuln.today

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