Skip to main content

Zephyr RTOS CVE-2026-19742

| EUVDEUVD-2026-109973 LOW
Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG) (CWE-338)
2026-10-26 zephyr
3.7
CVSS 3.1 · Vendor: zephyr
View

Attack ChainAIDerived

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

  1. Access
    Observe target device network traffic
  2. Delivery
    Capture on-wire IDs from shared PRNG
  3. Exploit
    Invert xoshiro128++ state transition
  4. Execution
    Reconstruct 128-bit IID secret key
  5. Persist
    Compute and predict IPv6 IIDs
  6. Impact
    Track device and directly target host

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Cryptographic PRNG selection
Exploitation Conditions

Requires a Zephyr build with CONFIG_NET_IPV6_IID_STABLE (RFC 7217 stable IIDs) or CONFIG_NET_IPV6_PE (RFC 8981 privacy extensions) enabled - both are experimental and disabled by default - AND a platform where sys_rand_get() resolves to the non-cryptographic xoshiro128++ generator (boards whose entropy driver sets CONFIG_ENTROPY_NEEDS_PRNG, e.g. the NXP MCUX TRNG driver), or an entropy-device backend that silently falls back to k_cycle_get_32() on driver failure. The attacker must also be able to observe the device's network traffic to recover the shared PRNG state from on-wire values (ephemeral ports, DNS/CoAP/DHCPv6 IDs, WebSocket masking keys). Limiting factors: the two vulnerable features are default-off experimental options, the weakness only manifests on the PRNG-backed entropy platform class, and state recovery depends on passive traffic observation. Note that builds using CONFIG_TEST_RANDOM_GENERATOR remain predictable by design even after the fix, since sys_csrand_get() is deliberately routed back to the test generator there.

Impact

Signals converge on genuinely low real-world urgency despite a network-exploitable CWE-338 flaw. The CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N = 3.7, Low) correctly captures the shape: unauthenticated but high-complexity, confidentiality-only. The vuln.today Decision label is 'monitor', which aligns with the low score. No EPSS probability and no SSVC exploitation/automatable/technical-impact values were provided in the input, so those dimensions cannot be weighed - treat their absence as missing data, not as evidence of low risk. The vulnerability is NOT in CISA KEV and there is no confirmed working exploit; the reporter explicitly states 'I have not demonstrated a practical attack' and 'No runtime testing or exploit development was performed', so this is a source-level finding only. Exploitation is further gated by two experimental, default-off build options (CONFIG_NET_IPV6_IID_STABLE, CONFIG_NET_IPV6_PE) AND a platform whose entropy backend is the non-cryptographic xoshiro128++ PRNG, so the condition set is narrow. The impact is privacy/tracking and address-predictability, not memory-safety, integrity, or availability. Net: this is a legitimate, well-analyzed cryptographic-weakness defect worth patching on normal cadence, not a high-CVSS-masquerading-as-emergency issue - and not a low-CVSS-hiding-real-danger issue either. The main caveat is that AC:H understates how trivial address computation becomes once the key is recovered; the complexity lives entirely in the one-time state-recovery step.

Exploit ScenarioDerived

On an affected board (experimental IID/PE feature enabled, entropy backend resolving to xoshiro128++), an attacker who can observe the device's network traffic captures on-wire values drawn from the same shared PRNG stream - ephemeral source ports, DNS query IDs, CoAP/DHCPv6 IDs - and inverts the generator's state transition to recover the 128-bit IID secret key. With the key known, the attacker computes the device's stable and temporary IPv6 interface identifiers for any prefix, enabling cross-network tracking and direct targeting of the host inside a /64 without scanning. No working exploit has been published; a public PoC reference exists but it is only a source-inspection reproduction procedure, not verified working exploit code.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.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 26, 2026

Predictable IPv6 interface identifiers in Zephyr RTOS 3.7.0 through 4.4.2 arise because the stack seeds the long-lived secret key behind RFC 7217 stable IIDs (gen_stable_iid() in subsys/net/ip/ipv6.c) and RFC 8981 temporary IIDs (gen_temporary_iid() in subsys/net/ip/ipv6_pe.c) with sys_rand_get(), an API documented as not cryptographically secure. On boards whose entropy driver selects CONFIG_ENTROPY_NEEDS_PRNG, that API resolves to the shared, invertible xoshiro128++ generator, and on entropy-device backends it silently degrades to k_cycle_get_32() samples on driver failure, so an attacker who passively observes on-wire values drawn from the same stream (ephemeral source ports, DNS query IDs, CoAP message IDs and tokens, DHCPv6 transaction IDs, WebSocket masking keys) can reconstruct the key and then compute a device's stable address for any prefix or link its temporary addresses across networks. Exploitation requires the default-off experimental options CONFIG_NET_IPV6_IID_STABLE or CONFIG_NET_IPV6_PE plus the affected PRNG-backed platform class, and no public exploit has been identified at time of analysis; impact is limited to address predictability and tracking (confidentiality of address-lifetime privacy only), with no memory-safety, integrity or availability effect. No public exploit identified at time of analysis, and the item is not tracked as confirmed actively exploited (CISA KEV).

RemediationAI

Vendor-released patch: 4.5.0, with the upstream fix merged on main as commit 253315829d3cb5906c660d8418d8408d40bd266f (PR #115807) and backports merged to the v4.4-branch (PR #116533), v4.3-branch (PR #116599) and v3.7-branch (PR #116603); the advisory notes 4.5.0 as a projected fixed version because the fix was merged on main before release, so confirm against the actual release notes. The patch replaces sys_rand_get() with sys_csrand_get() for the IID secret key in both gen_stable_iid() and gen_temporary_iid() and returns -EIO when no cryptographic randomness is available instead of silently deriving addresses from a predictable key - be aware that this changes behavior, since IID generation will now fail rather than proceed on platforms without a usable CSPRNG or entropy driver, so validate your entropy/PSA_CSPRNG configuration before rolling out. If upgrading is not immediately possible, the effective mitigation is to leave CONFIG_NET_IPV6_IID_STABLE and CONFIG_NET_IPV6_PE disabled (they are experimental and default-off), accepting the loss of stable and privacy-extension IIDs in favor of whatever address formation the rest of your configuration provides; a secondary measure is to ensure your entropy driver does not fail at boot on PRNG-backed platforms, since the silent k_cycle_get_32() fallback is the alternate path to a guessable key. No workaround changes the fact that CONFIG_TEST_RANDOM_GENERATOR builds stay predictable by design even after the fix. Advisory and patch references: https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-xfm2-gr93-8mx9 and https://github.com/zephyrproject-rtos/zephyr/commit/253315829d3cb5906c660d8418d8408d40bd266f.

Affected VersionsENISA

Zephyr 3.7.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

The root cause is CWE-338 (use of a cryptographically weak PRNG) applied to a protocol secret. RFC 7217 and RFC 8981 both require the persistent HMAC key from which interface identifiers are derived to be an unpredictable random value of at least 128 bits, because every generated IID's unpredictability rests entirely on it; Zephyr instead filled that 16-byte key with sys_rand_get(), which include/zephyr/random/random.h explicitly documents as non-cryptographic, rather than sys_csrand_get(), the CS API that returns an error code and is already used elsewhere in the networking stack (for example tcp.c for the RFC 6528 ISN secret). On platforms where the entropy driver sets CONFIG_ENTROPY_NEEDS_PRNG - the NXP MCUX TRNG driver does exactly this - sys_rand_get() is backed by subsys/random/random_xoshiro128.c, a single global 128-bit xoshiro128++ state shared with every other consumer of the API; because the xoshiro state transition is invertible and many consumers expose their output directly on the wire, an observer can step the generator backwards to the key draw. The entropy-device backend (subsys/random/random_entropy_device.c) adds a second failure mode: when the driver fails, the non-CS path quietly fills the buffer with k_cycle_get_32() samples and reports no error. With the key known, stable IIDs become directly computable for any prefix since the remaining HMAC inputs (prefix, interface index, interface name, DAD counter) are guessable, and temporary IIDs become linkable after a cheap search over the mixed-in k_uptime_get_32() value. The CPE record cpe:2.3:a:zephyrproject:zephyr:*:*:*:*:*:*:*:* is version-wildcarded, so the authoritative affected range is the advisory's >= 3.7.0, <= 4.4.2; the flaw was introduced by ed9a983837b8 (privacy extension, May 2024) and 94177a200ecd (stable IID, November 2024). Both vulnerable features are experimental and disabled by default, reachable through ordinary SLAAC / RA-driven address formation, and both select PSA_CRYPTO, which is why a PSA CSPRNG is available once the fix switches the key derivation.

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

Unauthenticated network observer (PR:N/AV:N) but AC:H because exploitation requires recovering invertible PRNG state from traffic on specific default-off/PRNG-backed builds; confidentiality-only tracking impact, no integrity/availability.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (zephyr).

CVSS VectorVendor: zephyr

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None

DescriptionCVE.org

The IPv6 stack derived the long-lived secret key used to compute RFC 7217 stable interface identifiers (gen_stable_iid() in subsys/net/ip/ipv6.c) and RFC 8981 temporary interface identifiers (gen_temporary_iid() in subsys/net/ip/ipv6_pe.c) with sys_rand_get(). That API is documented as not cryptographically secure, while both RFCs require this key to be an unpredictable random value of at least 128 bits - the unpredictability of every generated IID rests entirely on it.

Depending on the platform, sys_rand_get() resolves either to a hardware entropy device or, on boards whose entropy driver sets CONFIG_ENTROPY_NEEDS_PRNG, to the non-cryptographic xoshiro128++ generator in subsys/random/random_xoshiro128.c, which keeps a single global 128-bit state shared with every other sys_rand_get() consumer. Many of those consumers put their output directly on the wire (ephemeral source ports, DNS query IDs, CoAP message IDs and tokens, DHCPv6 transaction IDs, WebSocket masking keys), and the xoshiro state transition is invertible, so an observer of a device's traffic can recover the generator state and reconstruct the IID secret key. Additionally, with the entropy-device backend sys_rand_get() silently falls back to k_cycle_get_32() samples when the entropy driver fails, and returns no error, so the key could be derived from the cycle counter without the caller noticing.

With the key known, stable IIDs become directly computable for any prefix (the remaining HMAC inputs - prefix, interface index, interface name, DAD counter - are guessable), and temporary IIDs become linkable after a cheap search over the mixed-in k_uptime_get_32() value. This defeats the properties both features exist to provide: an attacker can track a device across networks and prefixes, and can predict its address inside a /64 without scanning, removing the usual barrier to directly targeting the host. There is no memory-safety, integrity, or availability impact.

The fix generates the key with sys_csrand_get() and aborts IID generation with -EIO when no cryptographic randomness is available, instead of silently deriving addresses from a predictable key. Both CONFIG_NET_IPV6_IID_STABLE and CONFIG_NET_IPV6_PE are experimental and disabled by default; builds using CONFIG_TEST_RANDOM_GENERATOR remain predictable by design, as sys_csrand_get() is deliberately routed back to the test generator there.

Threat Intelligence Overview

EPSS Score
0.2%
Top 84% exploitable
Prevalence
Medium
popular embedded/IoT RTOS, but affected IPv6 IID features experimental and default-off
Data Quality
4 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 LOW
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
Open
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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