Skip to main content

Zephyr RTOS CVE-2026-78116

| EUVDEUVD-2026-107482 MEDIUM
Double Free (CWE-415)
2026-10-21 zephyr
5.2
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

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

  1. Access
    Position light source or object near optical sensor
  2. Delivery
    Provoke invalid-data status from Argus_EvaluateData()
  3. Exploit
    Trigger double completion of same rtio_iodev_sqe
  4. Execution
    Double-free and splice RTIO pool/mempool free lists
  5. Impact
    Memory corruption and device availability loss

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Double free prevention
Exploitation Conditions

Exploitation requires a Zephyr firmware build that enables the Broadcom AFBR-S50 driver (devicetree compatible brcm,afbr-s50); unaffected if the driver is not compiled in. The attacker must be within optical range of the sensor to force Argus_EvaluateData() into a non-STATUS_OK branch - achievable by introducing harsh ambient light or sharp distance transitions into the sensor's field of view (and in releases before the payload.Status check was dropped, ordinary sharp distance transitions sufficed); SPI transfer errors reach the same branch. No physical contact with the board, no software access, and no authentication are needed. Limiting factors: only streaming (multishot) and one-shot RTIO submissions on affected builds are impacted, exploitation demands physical proximity to the sensor (AV:P), and the attacker cannot control the corrupted memory content, so outcomes are limited to crashes/availability loss rather than controlled compromise.

Impact

This is a genuine but comparatively low-priority defect whose signals are internally consistent toward a moderate rating. The provided CVSS 3.1 vector (AV:P/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H, base 5.2) is the dominant anchor: the attack vector is Physical (AV:P), meaning the trigger requires proximity to the optical sensor rather than network reach, which sharply limits mass or remote exploitation. No EPSS score was provided, the CVE is not listed in CISA KEV, and no public exploit code is referenced - only a vendor patch commit and a GitHub Security Advisory (GHSA-559f-34rc-pgw2). No SSVC decision data was supplied. The technical impact is a CWE-415 double-free/double-completion corrupting the RTIO submission pool, with availability impact High and integrity Low; crucially the description states the attacker does NOT control the corrupted content, so this is availability/memory-corruption, not code execution. Note the tension between the AV:P vector and the ease of triggering: the failure branch is driven by sensor conditions (harsh ambient light, sharp distance transitions, SPI errors) and needs no physical contact or software access, so the barrier is physical proximity to the sensor's field of view, not authentication or privilege. Net: a real correctness bug worth patching on affected embedded builds, but not a widespread exploitation priority - the Physical vector and the niche affected driver keep real-world risk modest.

Exploit ScenarioDerived

An actor positioned in front of a Zephyr-based device's AFBR-S50 time-of-flight sensor shines harsh ambient light or creates sharp distance transitions in the sensor's field of view, causing Argus_EvaluateData() to return a non-STATUS_OK status. The error branch completes the RTIO submission with rtio_iodev_sqe_err() but fails to return, so the same submission is completed a second time with rtio_iodev_sqe_ok(), double-freeing the pool entry and corrupting submission/mempool bookkeeping, leading to memory corruption and loss of availability. No public exploit code is identified, and the physical attack vector (AV:P) with low complexity (AC:L) means proximity to the sensor - not network access - is the key prerequisite.

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 – Oct 21, 2026

Double-completion of an RTIO submission in the Zephyr RTOS Broadcom AFBR-S50 time-of-flight sensor driver corrupts the RTIO submission pool, causing aliased submissions, writes through already-released RX buffers, and duplicate completions delivered to the application. Only firmware builds that compile in the driver for devicetree compatible brcm,afbr-s50 are affected; the error branch can be triggered by anyone within optical range of the sensor through harsh ambient light, sharp distance transitions, or SPI transfer errors, with no board contact and no authentication required (CVSS 3.1 5.2, AV:P/AC:L/PR:N, C:N/I:L/A:H). No public exploit code was identified at time of analysis, and because the attacker cannot control the corrupted content the realistic outcome is memory corruption and denial of service rather than directed code execution.

RemediationAI

Upstream fix available (PR/commit); released patched version not independently confirmed - the remedy is commit 817e92c5184c0d64b8cc6537f4e42ce1e5b635f9, which adds the missing return after handle_error_on_result() in data_ready_work_handler(), and downstream products should either cherry-pick that commit or move to a Zephyr release that includes it, per advisory https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-559f-34rc-pgw2. Where the driver is not actually used, the most effective mitigation is to remove it from the build (drop the brcm,afbr-s50 devicetree node and its driver Kconfig selection in prj.conf/overlay), which eliminates the attack surface entirely at the cost of losing the time-of-flight sensor feature. If the sensor must remain in service on an unpatched image, physically shroud or recess the optical aperture to limit stray ambient light and abrupt scene changes in its field of view, since the failing branch is driven by optical conditions - this reduces but does not eliminate the trigger, as SPI transfer errors reach the same code path, and it offers no protection against a determined attacker with line of sight. Defensive monitoring can be added by checking application-visible sensor completion callbacks for duplicate or stale userdata and by treating unexpected RTIO errors as indicators, but such detection is reactive only. No vendor patch version number is asserted here beyond the referenced commit.

Affected VersionsENISA

Zephyr 4.3.0 <4.5.0

Affected Packages

euvd zephyr fix: 4.5.0

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

Zephyr's RTIO subsystem submits sensor read requests as struct rtio_iodev_sqe objects drawn from a mempool-backed SQE pool, with streaming (multishot) requests additionally holding an RX buffer released via rtio_release_buffer(). Both rtio_iodev_sqe_err() and rtio_iodev_sqe_ok() funnel into rtio_executor_done() in subsys/rtio/rtio_executor.c, which returns the submission to the pool with rtio_sqe_pool_free(). In data_ready_work_handler() of drivers/sensor/broadcom/afbr_s50/afbr_s50.c, a non-STATUS_OK result from the vendor Argus_EvaluateData() call invoked handle_error_on_result() to finalise the request as an error, but unlike the function's other error branches it did not return, so control fell through to the tail and finalised the same struct rtio_iodev_sqe a second time as a success. The second completion reads freed memory, pushes the same mpsc node onto the submission queue while it is already on the pool free list (splicing both lists together), and re-submits the freed request so the next measurement is written through a released buffer; one-shot submissions instead emit a spurious success completion with stale userdata and free the same pool entry twice. The root cause class is CWE-415 (double free) arising from a missing return after an error-handling helper, and the upstream fix is a single added return statement (commit 817e92c5184c0d64b8cc6537f4e42ce1e5b635f9). The triggering condition originates in the sensor rather than in host software: the vendor API documents statuses such as ERROR_ARGUS_BIAS_VOLTAGE_REINIT and ERROR_ARGUS_LASER_MONITOR_INACTIVE as transient responses to harsh ambient light, and the payload.Status check that previously gated this path was dropped in earlier releases, so ordinary sharp distance transitions alone once sufficed.

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

Trigger requires proximity to the optical sensor so AV:P; no privileges or UI needed (PR:N/UI:N); double-free yields availability loss (A:H) and uncontrolled bookkeeping corruption (I:L) with no disclosure (C:N).

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

DescriptionCVE.org

The Broadcom AFBR-S50 time-of-flight sensor driver double-completes an RTIO submission when sensor data evaluation fails. In data_ready_work_handler() (drivers/sensor/broadcom/afbr_s50/afbr_s50.c), a non-STATUS_OK return from Argus_EvaluateData() calls handle_error_on_result(), which finalises the request with rtio_iodev_sqe_err(), but execution then fell through to the tail of the function and finalised the very same struct rtio_iodev_sqe a second time with rtio_iodev_sqe_ok(). Unlike the other error branches in the same function, this one did not return.

Both completion helpers reach rtio_executor_done() in subsys/rtio/rtio_executor.c, which returns the submission to the pool via rtio_sqe_pool_free() and, for streaming (multishot) submissions, also releases the RX buffer with rtio_release_buffer(). The second completion therefore reads a freed rtio_iodev_sqe, pushes the same mpsc node onto the submission queue while it is already on the pool free list - splicing the two lists together - and re-submits the freed request so the next measurement is written through an already-released buffer. For one-shot submissions it emits a spurious success completion carrying stale userdata and frees the same pool entry twice.

The failure branch is driven by sensor conditions rather than by host software. The vendor API documents statuses such as ERROR_ARGUS_BIAS_VOLTAGE_REINIT and ERROR_ARGUS_LASER_MONITOR_INACTIVE as transient results of harsh ambient light, so a party in front of the optical sensor can provoke the invalid-data condition without any physical contact with the board or any software access; SPI transfer errors reach the same branch. In releases before the payload.Status check was dropped, ordinary sharp distance transitions in the sensor's field of view were sufficient.

Impact is corruption of the RTIO submission pool and mempool bookkeeping: aliased submissions, writes through released buffers, and duplicate completions delivered to the application. The attacker does not control the corrupted content, so the practical consequence is memory corruption and loss of availability on devices that instantiate brcm,afbr-s50, rather than directed code execution. Only builds that enable this driver are affected.

Threat Intelligence Overview

EPSS Score
0.2%
Top 94% exploitable
Prevalence
Low
niche Broadcom time-of-flight sensor driver, only in builds enabling brcm,afbr-s50
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 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· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

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

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