Skip to main content

Zephyr RTOS CVE-2026-13212

| EUVDEUVD-2026-64925 HIGH
Improper Validation of Array Index (CWE-129)
2026-08-24 zephyr
8.8
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

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

  1. Access
    Attacker controls virtio backend (hypervisor/device)
  2. Delivery
    Craft oversized descriptor ID in used ring
  3. Exploit
    Raise virtqueue interrupt on Zephyr guest
  4. Execution
    virtio_isr reads OOB function pointer from heap
  5. Impact
    Execute arbitrary code in guest interrupt context

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Array index validation
Exploitation Conditions

CONFIG_VIRTIO must be enabled in the Zephyr build (not the default in all configurations), and the system must use either the PCI or MMIO virtio transport. The attacker must control or have compromised the virtio backend - specifically the component that writes to the used ring and raises the virtqueue interrupt - which in practice means a malicious or compromised hypervisor, a rogue PCI device, or a peer processor on an MMIO-connected virtio design. No guest-side authentication, privilege, or user interaction is required once backend control is established. Exploitation is limited to devices running Zephyr 4.2.0 through 4.4.1 with the above build-time option. Systems using neither PCI nor MMIO virtio transport, or built without CONFIG_VIRTIO, are not exploitable regardless of backend trust status.

Impact

The CVSS 3.1 score of 8.8 (AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) accurately reflects the technical severity: the attack requires no guest-side privileges or user interaction and has low complexity once the backend is controlled, but is bounded by the adjacent-network vector, meaning the attacker must already control or have compromised the virtio backend (hypervisor, firmware, or PCI device) rather than operating over arbitrary internet paths. That prerequisite is non-trivial in well-secured cloud or embedded deployments but is exactly the threat model Zephyr's virtio stack must defend against when running under untrusted or partially-trusted hypervisors. No EPSS score was provided in the source data; given the absence of active exploitation or public POC, real-world exploitation probability is likely low in the near term, though the technical barrier to exploitation for a backend-controlling attacker is minimal once the vulnerability is understood. There is no CISA KEV listing and no public exploit code, so this is not a fire-drill scenario - but operators deploying Zephyr with CONFIG_VIRTIO under environments where the hypervisor or virtio device trustworthiness cannot be fully guaranteed (multi-tenant embedded, mixed-trust IPC designs, or third-party MMIO hardware) should treat patching as a priority rather than optional hygiene. The S:U (unchanged scope) rating is consistent: the impact is confined to the Zephyr guest itself, with no demonstrated lateral movement, though arbitrary code execution in interrupt context effectively represents full guest compromise.

Exploit ScenarioDerived

An attacker controlling a malicious hypervisor or a compromised PCI/MMIO virtio device writes a crafted descriptor-chain head ID (e.g., 0xFFFF) into the used ring and raises the virtqueue interrupt on the Zephyr guest. When virtio_isr() processes the interrupt without a bounds check, it reads a function pointer and its argument from heap memory at recv_cbs[0xFFFF] - memory the attacker has pre-shaped through other allocations - and calls that pointer in the guest's interrupt context. No public proof-of-concept exploit code has been identified at time of analysis, but the exploitation path is mechanically straightforward for an attacker with backend control.

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 – Aug 24, 2026

Control-flow hijack in the Zephyr RTOS virtio driver (versions 4.2.0 through pre-4.4.2) allows a malicious or compromised virtio backend - such as an untrusted hypervisor or an untrusted PCI/MMIO virtio device - to invoke an arbitrary function pointer inside the Zephyr guest's interrupt handler. The root cause is a missing bounds check in virtio_isr() (drivers/virtio/virtio_common.c): the 16-bit descriptor-chain head ID written by the device into the used ring is consumed directly as an index into heap-allocated recv_cbs[] and desc[] arrays, each sized exactly vq->num, enabling an out-of-bounds read that returns an attacker-shaped {function pointer, argument} pair which is then called. No public exploit or active exploitation (CISA KEV) has been identified at time of analysis, but the primitive - arbitrary code execution in interrupt context triggered entirely from the backend - is high-severity and the vendor-confirmed patch is available in Zephyr 4.4.2.

RemediationAI

Upgrade to Zephyr 4.4.2 or any later release that includes commit fe47dbca080957c425383cc1d5bdc7d48a41d4a5; this commit adds the bounds check that rejects used-ring descriptor IDs >= vq->num and is the authoritative fix per the vendor advisory at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-7884-373w-qqhx. If an immediate upgrade is not feasible, disable CONFIG_VIRTIO in the project's Kconfig to remove the virtio subsystem entirely - this eliminates the attack surface with the trade-off of losing all virtio-backed device functionality (network, block, etc.). A second workaround is to restrict the system to exclusively trusted, first-party virtio backends by enforcing hypervisor or hardware attestation at the deployment level; however, this is an architectural control rather than a code fix and does not eliminate the underlying code path. No additional compensating controls short of disabling CONFIG_VIRTIO are sufficient if the backend cannot be trusted.

Affected VersionsENISA

Zephyr 4.2.0 <4.4.2

Affected Packages

euvd zephyr fix: 4.4.2

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 Zephyr virtio subsystem implements the VirtIO 1.x split-ring transport (CWE-129: Improper Validation of Array Index). In the split-ring model the device (backend) owns the 'used' ring and writes completed descriptor-chain head IDs back to the driver (guest). The vulnerable code in virtio_isr() trusts this device-written 16-bit id field as a valid array index with no upper-bound validation against vq->num, the actual allocated queue size. Because recv_cbs[] - storing {cb, opaque} callback pairs - and desc[] are both heap-allocated with exactly vq->num slots, any id value >= vq->num causes an out-of-bounds heap read. The attacker shapes heap memory beyond recv_cbs[] so the OOB read returns a controlled function pointer and argument; the driver then calls cbe.cb(cbe.opaque, used_len) in the guest's interrupt context (IRQ handler), giving the backend a direct control-flow-hijack primitive. This affects all CONFIG_VIRTIO builds using either PCI or MMIO transport. The fix (commit fe47dbca) inserts a guard 'if (chain_head >= vq->num) { LOG_ERR(...); vq->last_used_idx++; continue; }' before any recv_cbs[]/desc[] access.

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 8.8 HIGH
AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 8.8 HIGH

Adjacent vector because the backend (hypervisor or device) must share the virtio transport; no guest privileges needed since attack originates entirely from the backend writing the used ring.

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

DescriptionCVE.org

The Zephyr virtio driver does not validate the descriptor-chain head id that the virtio device writes into the used ring. In virtio_isr() (drivers/virtio/virtio_common.c), the device-written vq->used->ring[idx].id is used directly as an index into vq->recv_cbs[] and vq->desc[], which are both allocated with exactly vq->num entries. recv_cbs[] holds {cb, opaque} callback entries, and the indexed callback pointer is then invoked as cbe.cb(cbe.opaque, used_len).

Because the id is consumed as a 16-bit value with no bound check, a malicious or compromised virtio backend (an untrusted hypervisor, or an untrusted hardware/peer-processor virtio device on a PCI or MMIO transport) can supply an id far beyond vq->num. This causes an out-of-bounds read of a {function pointer, argument} pair from heap memory beyond recv_cbs[], after which the driver calls that attacker-shaped pointer in the guest's interrupt context. No guest privileges or user interaction are required; the backend triggers it by writing the shared used ring and raising the queue interrupt.

The result is an arbitrary / attacker-influenced function-pointer call in the Zephyr guest, i.e. a control-flow-hijack primitive that can lead to code execution or, at minimum, a reliable crash. The fix rejects any used-ring id >= vq->num before indexing recv_cbs[]/desc[] or invoking the callback. This affects builds using CONFIG_VIRTIO with the PCI or MMIO transport.

Executive ViewAI

Why It Matters

Zephyr RTOS versions 4.2.0 through 4.4.1 contain a control-flow hijacking vulnerability allowing a compromised virtio backend to execute arbitrary code at the interrupt level, potentially compromising all data and system functions on embedded devices. Organizations deploying Zephyr in virtualized environments or with untrusted external devices face complete loss of device integrity and must remediate immediately.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 87% exploitable
Prevalence
Low
niche embedded RTOS for constrained IoT/firmware devices
Data Quality
6 sources
Confidence: High

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
Scheduled
Exploitation
None
System Exposure· derived
Controlled
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

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

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

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