Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessPosition light source or object near optical sensor
-
DeliveryProvoke invalid-data status from Argus_EvaluateData()
-
ExploitTrigger double completion of same rtio_iodev_sqe
-
ExecutionDouble-free and splice RTIO pool/mempool free lists
-
ImpactMemory 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
AV:P/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H
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).
Primary rating from Vendor (zephyr).
CVSS VectorVendor: zephyr
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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Potential off-by-one buffer overflow vulnerability in the Zephyr fuse file system. Rated critical severity (CVSS 10.0),
An out-of-bounds write in the Zephyr RTOS DNS resolver (dns_unpack_name()) lets a crafted DNS response corrupt memory on
Possible variant of CVE-2021-3434 in function le_ecred_reconf_req. Rated critical severity (CVSS 9.8), this vulnerabilit
Unchecked user input length in /subsys/net/l2/wifi/wifi_shell.c can cause buffer overflows. Rated critical severity (CVS
Potential buffer overflow vulnerability in the Zephyr CAN bus subsystem. Rated critical severity (CVSS 9.8), this vulner
Integer Underflow in 6LoWPAN IPHC Header Uncompression in Zephyr. Rated critical severity (CVSS 9.8), this vulnerability
Buffer overflow in Zephyr USB DFU DNLOAD. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable
DOS: Incorrect 802154 Frame Validation for Omitted Source / Dest Addresses. Rated critical severity (CVSS 9.8), this vul
zephyr-rtos version 1.12.0 contains a NULL base pointer reference vulnerability in sys_ring_buf_put(), sys_ring_buf_get(
Potential buffer overflow vulnerabilities n the Zephyr Bluetooth subsystem. Rated critical severity (CVSS 9.6), this vul
The documentation specifies that the BT_GATT_PERM_READ_LESC and BT_GATT_PERM_WRITE_LESC defines for a Bluetooth characte
Potential buffer overflows in the Bluetooth subsystem due to asserts being disabled in /subsys/bluetooth/host/hci_core.c
EUVD-2026-107482
NVD
CVE.org
EPSS
GitHub
Exploit-DB