Skip to main content

Zephyr RTOS CVE-2026-79976

| EUVDEUVD-2026-107487 HIGH
NULL Pointer Dereference (CWE-476)
2026-10-21 zephyr
7.1
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Compromise peer MCTP endpoint or BMC on bus
  2. Delivery
    Write packet to RX_MSG_ADDR then STOP (frees rx_pkt)
  3. Exploit
    Issue bare read transaction then STOP
  4. Execution
    Stale reg_addr dereferences NULL buffer in IRQ handler
  5. Impact
    Fatal exception, device reset/halt (DoS)

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Null pointer safety, defensive checks
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

The target must be a Zephyr build compiled with the experimental CONFIG_MCTP subsystem and CONFIG_MCTP_I2C_GPIO_TARGET=y, operating as an MCTP-over-I2C+GPIO target on a shared I2C management bus. The attacker must be able to act as a controller on that bus - realistically a compromised peer MCTP endpoint or a compromised BMC - and trigger the sequence 'packet write to MCTP_I2C_GPIO_RX_MSG_ADDR + STOP' then 'bare read + STOP' (or the symmetric TX-side case via MCTP_I2C_GPIO_TX_MSG_ADDR). The fatal denial-of-service (device reset/halt) only occurs on parts that trap accesses to address 0; on parts where address 0 is readable the impact degrades to a malformed packet buffer handed to the MCTP stack and dropped outbound packets. Limiting factors: non-default experimental configuration, adjacent (same physical bus) access, and a pre-existing controller foothold - there is no remote network reachability.

Impact

Signals are mixed and point to a real-but-bounded priority rather than an urgent one. The CVSS 3.1 vector (AV:A/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H, base 7.1 HIGH) is driven almost entirely by A:H (device reset/halt), since the vulnerability is a NULL pointer dereference (CWE-476) with no attacker-controlled write. The vector correctly uses AV:A - exploitation requires a position on the shared I2C management bus, not arbitrary network reach - and PR:N/AC:L reflect that two ordinary unauthenticated transactions suffice. No EPSS score, CISA KEV entry, or public POC was provided, so there is no evidence of active exploitation or weaponization. In SSVC terms: exploitation = none observed, automatable = effectively no (the attacker must already hold a controller role on the bus, e.g. via a compromised peer MCTP endpoint or BMC), technical impact = total for the affected device (DoS). The dominant mitigating factor is scope: only builds that opt into the experimental CONFIG_MCTP subsystem with CONFIG_MCTP_I2C_GPIO_TARGET=y are affected. CONFLICT TO NOTE: the input CVSS vector lists C:L, but the vendor description explicitly states 'no confidentiality or integrity boundary is crossed' - the C:L appears over-stated; the realistic worst case on address-0-readable parts is a malformed packet buffer and dropped TX packets, not a confidentiality leak. Net: a legitimate availability bug worth patching on affected BMC/management-bus deployments, but gated behind both an experimental non-default config and a pre-existing bus-adjacent foothold, so not a mass-exploitation threat.

Exploit ScenarioDerived

Compromised firmware on a peer MCTP endpoint or on the BMC gains controller role on the shared I2C management bus and issues a normal packet write to MCTP_I2C_GPIO_RX_MSG_ADDR followed by STOP (delivering and freeing b->rx_pkt), then a bare read transaction followed by STOP; the stale reg_addr/rxtx state causes the target's I2C interrupt handler to call mctp_bus_rx() with a NULL packet. On parts that trap address-0 access this is a fatal exception and device reset/halt (DoS). No public exploit code was identified; the attack is adjacent (AV:A), low-complexity (AC:L), and requires no authentication (PR:N).

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 21, 2026

A stale-state flaw in Zephyr's experimental MCTP-over-I2C+GPIO target binding lets any device that can act as an I2C controller on the shared management bus crash the target with two ordinary transactions, because the selected pseudo-register and data-phase flag are never reset at STOP. The resulting NULL pointer dereference occurs inside the I2C target interrupt handler, so on parts that trap address-0 accesses it produces a fatal exception and device reset or halt; on other parts it degrades to a malformed packet buffer reaching the MCTP stack and silently dropped transmit packets. Only builds with CONFIG_MCTP and CONFIG_MCTP_I2C_GPIO_TARGET=y are exposed, exploitation requires a pre-existing foothold on the same physical bus (compromised peer endpoint or BMC), and no public exploit code was identified at time of analysis; the authoritative assessment scores this as availability-only impact (CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) rather than the C:L/I:N variant in the published vector.

RemediationAI

Apply the upstream fix commit 60f7fee438504de29f2473d7a8d0535235b983ef (or upgrade to a Zephyr release that contains it), which resets b->reg_addr to MCTP_I2C_GPIO_INVALID_ADDR and clears b->rxtx at every STOP in mctp_i2c_gpio_target_stop(); released version numbers containing the fix were not independently confirmed, so verify against the vendor advisory GHSA-76fx-m4mf-24gq and the commit history before declaring a build patched. If the target firmware cannot be rebuilt promptly, disable the experimental MCTP I2C+GPIO target role by removing CONFIG_MCTP_I2C_GPIO_TARGET=y (and CONFIG_MCTP if the stack is otherwise unused) - the trade-off is loss of MCTP management-plane transport on that device, which may break BMC-to-endpoint control traffic. Because the trigger only requires controller privilege on the shared bus, the effective compensating control is bus segmentation and access control: isolate the management I2C segment so only trusted controllers (a single hardened BMC, no shared connectors or debug headers) can drive it, and disable or physically restrict external I2C access paths - this reduces but does not eliminate exposure, since a compromised BMC or peer endpoint retains the required capability. Note the flaw is a stop/start-cycle state-reset defect, so there is no traffic-filtering workaround that reliably prevents the two-transaction sequence once an attacker can speak on the bus.

Affected VersionsENISA

Zephyr 4.3.0 ≤4.4.2

Affected Packages

euvd zephyr no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The affected code is subsys/pmci/mctp/mctp_i2c_gpio_target.c, the target-side (peripheral) half of Zephyr's MCTP over I2C with GPIO-based signalling. It emulates a tiny pseudo-register file: a bus controller first writes a register selector byte (b->reg_addr, values such as MCTP_I2C_GPIO_RX_MSG_ADDR and MCTP_I2C_GPIO_TX_MSG_ADDR) and then performs data-phase reads or writes against the buffer that register points to, with b->rxtx tracking which direction the data phase runs. Neither b->reg_addr nor b->rxtx was cleared when the controller issued an I2C STOP, and mctp_i2c_gpio_target_stop() consumes and NULLs the packet buffers (b->rx_pkt, b->tx_pkt). A controller can therefore re-enter the same branch of the STOP handler with a NULL buffer: a normal packet write to RX_MSG_ADDR plus STOP delivers and frees b->rx_pkt, then a bare read plus STOP arrives with the RX_MSG_ADDR selection still latched, the read_requested() call fails without repairing state, and the stop callback calls mctp_bus_rx() with a NULL packet. The symmetric TX case dereferences b->tx_pkt->end after b->tx_pkt was cleared and signals b->tx_complete twice, dropping the next outbound packet. This is CWE-476 (NULL pointer dereference) arising from missing state invalidation across transaction boundaries in a bus-peripheral callback context; the dereference executes in the I2C target interrupt handler, which is why trapping parts reset or halt outright while non-trapping parts merely propagate a corrupt buffer. The upstream fix sets b->reg_addr = MCTP_I2C_GPIO_INVALID_ADDR and b->rxtx = false on every STOP so a fresh register selection is mandatory before any further data phase.

Know when Zephyr gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

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

Adjacent shared-bus access (AV:A) with two unauthenticated low-complexity transactions (AC:L/PR:N); vendor states no confidentiality/integrity boundary crossed so C:N/I:N, and the NULL deref causes device reset giving A:H.

3.1 AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:A/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/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
Low
Integrity
None
Availability
High

DescriptionCVE.org

The MCTP-over-I2C+GPIO target binding in subsys/pmci/mctp/mctp_i2c_gpio_target.c emulates a small pseudo-register file, where the bus controller first writes a register number and then writes or reads payload bytes. The selected register (b->reg_addr) and the data-phase flag (b->rxtx) were never cleared when the controller issued an I2C STOP, so after a completed transfer the target still had a data register selected while the packet buffer that register refers to had already been consumed and set to NULL by mctp_i2c_gpio_target_stop().

A controller on the bus can re-enter the same branch of mctp_i2c_gpio_target_stop() with a NULL buffer using two ordinary transactions and no authentication: first a normal packet write to MCTP_I2C_GPIO_RX_MSG_ADDR followed by STOP (which delivers and frees b->rx_pkt), then a bare read transaction followed by STOP. The failing read_requested() call leaves the stale state untouched and the I2C driver still delivers the STOP callback, which then calls mctp_bus_rx() with a NULL packet. The symmetric case exists on the transmit side, where the stale MCTP_I2C_GPIO_TX_MSG_ADDR selection dereferences b->tx_pkt->end after b->tx_pkt has been cleared and additionally signals b->tx_complete a second time, causing the next outbound packet to be dropped.

The dereference happens in the I2C target interrupt handler, so on any target that traps accesses to address 0 the result is a fatal exception and a device reset or halt - a denial of service inflicted by any device able to act as controller on the shared management bus (for example compromised firmware on a peer MCTP endpoint or on the BMC). On parts where address 0 is readable, the impact degrades to a malformed packet buffer being handed to the MCTP stack and lost transmit packets. No attacker-controlled value is written and no confidentiality or integrity boundary is crossed.

The fix resets b->reg_addr to MCTP_I2C_GPIO_INVALID_ADDR and clears b->rxtx at every STOP, so a new register must be selected before any data phase can run again. Only builds that opt into the experimental CONFIG_MCTP subsystem with CONFIG_MCTP_I2C_GPIO_TARGET=y are affected.

Technical POC Analysis

CWE-476 (NULL pointer dereference) in Zephyr's MCTP-over-I2C+GPIO target binding, subsys/pmci/mctp/mctpi2cgpiotarget.c.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Zephyr RTOS-based devices built with the experimental MCTP-over-I2C+GPIO target binding can be forced into a fatal exception, device reset, or halt by any peer able to act as an I2C controller on the shared management bus, using just two ordinary bus transactions to trip a stale-state NULL pointer dereference inside the target interrupt handler. The defect is availability-only and confined to builds that explicitly enable CONFIG_MCTP and CONFIG_MCTP_I2C_GPIO_TARGET, and it presumes an attacker already occupies the same physical bus (for example a compromised peer endpoint or BMC). Leadership should care because the exposed components sit on privileged internal management buses in embedded and BMC-adjacent products, so repeated resets and dropped packets could degrade fleet manageability, telemetry, and service availability even without any data exposure or integrity loss.

Business Impact: Medium
Compensating Controls

Apply vendor patch. Until the patched build is deployed, disable CONFIG_MCTP_I2C_GPIO_TARGET (or CONFIG_MCTP entirely) in affected images where the experimental binding is not required, and restrict the set of devices permitted to act as I2C controllers on the shared management bus.

Threat Intelligence Overview

EPSS Score
0.2%
Top 90% exploitable
Prevalence
Low
experimental opt-in MCTP subsystem, narrow embedded/BMC management-bus footprint
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Controlled
Automatable· derived
No
Human Impact
Medium

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

A null pointer dereference occurs when a program attempts to access memory through a pointer that has been set to NULL (address 0x0).

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

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-2026-1678 CRITICAL POC
9.8 Mar 05

An out-of-bounds write in the Zephyr RTOS DNS resolver (dns_unpack_name()) lets a crafted DNS response corrupt memory on

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-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

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