Skip to main content

Zephyr RTOS CVE-2026-12629

| EUVDEUVD-2026-60266 MEDIUM
Loop with Unreachable Exit Condition (Infinite Loop) (CWE-835)
2026-08-17 zephyr
4.6
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

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

  1. Recon
    Gain physical access to UART serial interface
  2. Delivery
    Connect controlled serial peer device
  3. Exploit
    Inject RX line error (framing, parity, break, or overrun)
  4. Install
    PL011 hardware sets error bits in MIS register
  5. C2
    pl011_isr() fires but never writes UARTICR for error bits
  6. Execute
    Interrupt line remains asserted after ISR returns
  7. Impact
    CPU re-enters ISR indefinitely, system permanently hangs

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Loop termination conditions
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

Three conditions must all be true simultaneously: (1) Hardware - the target system uses an ARM SoC with a PL011 UART peripheral running Zephyr 1.14.0 through 4.4.1; (2) Configuration - the application explicitly calls uart_irq_err_enable() on the relevant UART port in interrupt-driven mode; this is off by default and no in-tree Zephyr driver or subsystem enables it, so only custom application code can trigger this path; (3) Physical access - the attacker controls the serial peer connected to that UART port and can inject line-level errors (baud mismatch for framing error, inverted parity bit for parity error, mid-character voltage transition for break error, or sustained FIFO flooding for overrun error). Exploitation is limited by: the non-default uart_irq_err_enable() requirement (the single largest filter), physical proximity to the UART hardware interface, the absence of any confidentiality or code-execution impact (pure availability DoS), and the restriction to Zephyr - not Linux or other OS PL011 drivers.

Impact

The CVSS 4.6 score and AV:P (physical) vector accurately reflect the real-world risk profile. The physical access requirement is meaningful: the attacker must control the serial peer device - physically attached to the UART header, plugged in as a removable serial adapter, or acting as the other end of a wired serial link. This is not a remotely exploitable vulnerability over a network. The most significant limiting factor is the non-default configuration gate: uart_irq_err_enable() must be explicitly called by application code, and no in-tree Zephyr subsystem calls it, so the overwhelming majority of Zephyr deployments are unaffected by this issue even if they run on PL011 hardware. The impact ceiling is high availability (permanent CPU hang) with zero confidentiality or integrity impact. No KEV listing and no EPSS data were provided, consistent with a low-exploitation-urgency finding. Overall this is a genuine but narrow vulnerability: high severity within its specific configuration window, but that window covers a small fraction of real deployments.

Exploit ScenarioDerived

An attacker with physical access to the UART serial interface of a Zephyr device - for example, via a UART-to-USB adapter connected to an exposed debug header - transmits a baud-rate-mismatched signal or asserts a mid-character break to trigger a framing or break error on the RX line. If the target application has called uart_irq_err_enable(), the PL011 hardware sets the error interrupt bit in MIS, pl011_isr() fires but never writes UARTICR to clear it, the interrupt line stays asserted, and the CPU enters a permanent ISR re-entry loop, hanging the system with no recovery. No public POC is available, but the technique is mechanically straightforward for any attacker with physical serial access.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.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 17, 2026

Interrupt-storm livelock in Zephyr RTOS's ARM PL011 UART driver (versions 1.14.0 through 4.4.1) allows an attacker controlling the serial peer to permanently hang the CPU by injecting line errors that trigger an error interrupt the ISR never clears. The root cause is that pl011_isr() acknowledged only the CTS modem-status interrupt and never wrote the UARTICR register for error bits (framing, parity, break, overrun), leaving the interrupt line permanently asserted and causing the CPU to re-enter the ISR indefinitely. Exploitation is gated by a non-default configuration requirement - the error interrupt path is off by default and no in-tree Zephyr subsystem enables it - so only embedded applications explicitly calling uart_irq_err_enable() on a PL011 interrupt-driven port are at risk. No public exploit or CISA KEV listing exists at time of analysis.

RemediationAI

Upgrade to Zephyr 4.4.2 or later, which incorporates the fix from commit 1069b6822ac90da2b9e6dc8a5bbe3873e9f92818 (https://github.com/zephyrproject-rtos/zephyr/commit/1069b6822ac90da2b9e6dc8a5bbe3873e9f92818); the fix version is reported by EUVD but the tagged release has not been independently confirmed from the provided references - verify against the Zephyr changelog. If an immediate upgrade is not feasible, the most effective workaround is to remove all calls to uart_irq_err_enable() for PL011-based UART ports in application code, which eliminates the vulnerable interrupt path entirely with no functional impact for most applications since error-interrupt reporting is non-default. An alternative workaround is to switch affected UART ports from interrupt-driven to polling mode, which bypasses pl011_isr() entirely; this trades interrupt latency efficiency for safety and may affect application timing characteristics. Refer to the vendor advisory at https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-36rp-2hcp-f5hv for official guidance.

Affected VersionsENISA

Zephyr 1.14.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 ARM PL011 is a widely-used UART peripheral IP block present in many ARM SoC designs, and Zephyr implements its driver in drivers/serial/uart_pl011.c. The PL011 hardware architecture maintains separate interrupt status registers: the Masked Interrupt Status register (MIS) tracks active interrupt sources, and errors (overrun, break, parity, framing - collectively PL011_IMSC_ERROR_MASK) are cleared only by an explicit write to the interrupt-clear register (UARTICR/ICR). Reading the data register (DR) clears the RX data-ready interrupt and the per-byte Receive Status Register (RSR) flags, but does NOT clear the error interrupt status in MIS. CWE-835 (Loop with Unreachable Exit Condition) describes the root cause exactly: the ISR returns with the interrupt line still asserted, so the hardware immediately re-invokes the ISR, creating an unbreakable re-entry loop. The fix (commit 1069b6822ac90da2b9e6dc8a5bbe3873e9f92818) adds uart->icr = uart->mis & PL011_IMSC_ERROR_MASK inside pl011_isr() to acknowledge pending error interrupts, and separately clears the latched RSR in pl011_err_check() so subsequent error reads are clean. The affected CPE is cpe:2.3:a:zephyrproject:zephyr:*:*:*:*:*:*:*:*.

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

Physical UART peer control required (AV:P); no target-side authentication needed (PR:N); pure availability impact with no data exposure or integrity change (C:N/I:N/A:H).

3.1 AV:P/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:P/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
Physical
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

DescriptionCVE.org

The ARM PL011 UART driver in drivers/serial/uart_pl011.c fails to acknowledge receive error interrupts. On the PL011, the framing, parity, break, and overrun error interrupts (PL011_IMSC_ERROR_MASK) are cleared only by writing the interrupt-clear register UARTICR; reading the data register clears the RX interrupt and the per-byte RSR status but not the error interrupt status in MIS. The interrupt service routine pl011_isr() acknowledged only the CTS modem-status interrupt and never wrote icr for the error bits, so an asserted error interrupt remains pending after the ISR returns.

When an application enables error-interrupt reporting via the public uart_irq_err_enable() API, an attacker who controls the serial peer can deterministically assert these error bits by injecting line errors on the RX line - a baud/stop-bit mismatch or mid-character break (framing/break error), a flipped parity bit (parity error), or FIFO flooding (overrun error). Because the error interrupt is never cleared, the interrupt line stays asserted and the CPU re-enters pl011_isr() immediately and indefinitely, producing an interrupt-storm livelock from which the core makes no forward progress.

The impact is an availability-only denial of service (permanent hang), reachable from an external or removable UART peer. Exploitation is gated by configuration: the error interrupt is off by default and no in-tree subsystem enables it, so only applications that explicitly call uart_irq_err_enable() on a PL011-based, interrupt-driven port are affected. The fix makes pl011_isr() acknowledge the pending error bits via uart->icr, breaking the loop, and additionally clears the latched RSR status in pl011_err_check().

Threat Intelligence Overview

EPSS Score
0.2%
Top 94% exploitable
Prevalence
Low
specialized embedded RTOS for IoT and microcontroller deployments
Social Media
1
Sightings
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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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
Defer
Exploitation
None
System Exposure· derived
Small
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

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