Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObserve target device network traffic
-
DeliveryCapture on-wire IDs from shared PRNG
-
ExploitInvert xoshiro128++ state transition
-
ExecutionReconstruct 128-bit IID secret key
-
PersistCompute and predict IPv6 IIDs
-
ImpactTrack 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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
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
AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
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.
Primary rating from Vendor (zephyr).
CVSS VectorVendor: zephyr
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
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
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
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-109973
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB