Description
The STM32WBA IEEE 802.15.4 driver in drivers/ieee802154/ieee802154_stm32wba.c computed the packet length of a received frame as pkt_len = rx_frame->length - IEEE802154_FCS_LENGTH without first checking that the radio-reported length could hold an FCS. pkt_len is a uint8_t, so a reported length of 0 or 1 wrapped to 254 or 255. The only bound on the resulting value was __ASSERT_NO_MSG(pkt_len <= CONFIG_NET_BUF_DATA_SIZE), which compiles to nothing in the default production configuration (CONFIG_ASSERT=n).

The length originates in the ST link-layer receive-done metadata (p_metadata->length, stored by stm32wba_802154_receive_done()), and ultimately in the PHY header of a frame received over the air, so it is influenced by any attacker within radio range of the device. Reaching the underflow requires the vendor link layer to surface a frame shorter than the FCS with no error; the driver performed no validation of its own on that value.

When the underflow occurs, stm32wba_802154_rx_thread() calls net_pkt_write(pkt, rx_frame->psdu, pkt_len) with a length of about 254 bytes against a receive buffer that holds at most one PHY packet (IEEE802154_MAX_PHY_PACKET_SIZE, 127 bytes). This reads roughly 128 bytes past the end of the radio receive buffer and copies that adjacent memory into a network packet that is submitted to the networking stack, giving an out-of-bounds read with a potential disclosure of adjacent RAM plus needless oversized packet allocation in the RX thread.

The fix rejects a frame whose reported length is smaller than IEEE802154_FCS_LENGTH before the subtraction, and replaces the compiled-out assertion with a runtime length check that drops oversized frames — matching the runtime check already present in drivers/ieee802154/ieee802154_nrf5.c.
Published: 2026-10-14
Score: 4.2 Medium
EPSS: n/a
KEV: No
Impact: Out-of-bounds read leading to potential memory disclosure
Action: Immediate Patch
AI Analysis

Impact

The vulnerability originates in the STM32WBA IEEE 802.15.4 driver where the received‑frame length is calculated without guarding against an underflow. A radio report of length 0 or 1 causes the 8‑bit subtraction to wrap, producing a packet length of 254 or 255 bytes. This value is then used to read from the radio buffer in an out‑of‑bounds fashion, copying up to 128 bytes beyond the allocated receive space into the network stack. The result is a read of adjacent RAM that can expose sensitive information and allocates an oversized network packet, leading to memory‑disclosure risk and inefficient resource use.

Affected Systems

All instances of Zephyr OS that include the STM32WBA IEEE 802.15.4 driver, specifically the source file drivers/ieee802154/ieee802154_stm32wba.c, are affected. Devices built with Zephyr before the fix must be updated. No specific version numbers are listed, so any Zephyr release prior to the commit that introduced the length check is considered vulnerable.

Risk and Exploitability

The CVSS score of 4.2 indicates moderate severity. The EPSS score is not available, and the vulnerability is not listed in CISA’s KEV catalog. An attacker needs to be within radio range of the target device and able to inject a packet containing an underflow‑producing length value; this can be achieved with a radio capable of driving the target’s 802.15.4 interface. Once the condition is triggered, an out‑of‑bounds read occurs, potentially leaking data from the device’s memory but not allowing arbitrary code execution. The exploit therefore raises confidentiality risk but does not affect integrity or availability directly. The lack of defensive assertions in production builds lowers the detection likelihood, while the ability to validate the frame length at runtime mitigates the risk if enabled.

Generated by OpenCVE AI on October 14, 2026 at 23:24 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Zephyr to a release that includes the patched STM32WBA IEEE 802.15.4 driver code that checks the frame length before subtraction.
  • Enable runtime assertions in the build configuration (CONFIG_ASSERT=y) to detect improper packet lengths during development and testing.
  • If an immediate upgrade is not feasible, add a custom filter in the application network stack to reject frames whose reported length is smaller than IEEE802154_FCS_LENGTH before processing.

Generated by OpenCVE AI on October 14, 2026 at 23:24 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 14 Oct 2026 17:00:00 +0000

Type Values Removed Values Added
Description The STM32WBA IEEE 802.15.4 driver in drivers/ieee802154/ieee802154_stm32wba.c computed the packet length of a received frame as pkt_len = rx_frame->length - IEEE802154_FCS_LENGTH without first checking that the radio-reported length could hold an FCS. pkt_len is a uint8_t, so a reported length of 0 or 1 wrapped to 254 or 255. The only bound on the resulting value was __ASSERT_NO_MSG(pkt_len <= CONFIG_NET_BUF_DATA_SIZE), which compiles to nothing in the default production configuration (CONFIG_ASSERT=n). The length originates in the ST link-layer receive-done metadata (p_metadata->length, stored by stm32wba_802154_receive_done()), and ultimately in the PHY header of a frame received over the air, so it is influenced by any attacker within radio range of the device. Reaching the underflow requires the vendor link layer to surface a frame shorter than the FCS with no error; the driver performed no validation of its own on that value. When the underflow occurs, stm32wba_802154_rx_thread() calls net_pkt_write(pkt, rx_frame->psdu, pkt_len) with a length of about 254 bytes against a receive buffer that holds at most one PHY packet (IEEE802154_MAX_PHY_PACKET_SIZE, 127 bytes). This reads roughly 128 bytes past the end of the radio receive buffer and copies that adjacent memory into a network packet that is submitted to the networking stack, giving an out-of-bounds read with a potential disclosure of adjacent RAM plus needless oversized packet allocation in the RX thread. The fix rejects a frame whose reported length is smaller than IEEE802154_FCS_LENGTH before the subtraction, and replaces the compiled-out assertion with a runtime length check that drops oversized frames — matching the runtime check already present in drivers/ieee802154/ieee802154_nrf5.c.
Title Out-of-bounds read from received-frame length underflow in the STM32WBA IEEE 802.15.4 driver
Weaknesses CWE-125
References
Metrics cvssV3_1

{'score': 4.2, 'vector': 'CVSS:3.1/AV:A/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:L'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: zephyr

Published:

Updated: 2026-10-14T16:46:02.993Z

Reserved: 2026-08-17T16:17:49.267Z

Link: CVE-2026-75085

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-14T17:19:10.607

Modified: 2026-10-14T17:19:10.607

Link: CVE-2026-75085

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-14T23:30:09Z

Weaknesses