CVE-2026-19742
Received Received - Intake

Weak IPv6 IID Generation in Zephyr RTOS

Vulnerability report for CVE-2026-19742, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-10-26

Last updated on: 2026-10-26

Assigner: Zephyr Project

Description

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.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-10-26
Last Modified
2026-10-26
Generated
2026-10-26
AI Q&A
2026-10-26
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 1 associated CPE
Vendor Product Version / Range
zephyrproject zephyr 3.7.0

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-338 The product uses a Pseudo-Random Number Generator (PRNG) in a security context, but the PRNG's algorithm is not cryptographically strong.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This vulnerability affects the IPv6 stack in Zephyr RTOS where the secret key used to generate stable and temporary interface identifiers (IIDs) was derived using a non-cryptographic random number generator. This key should be unpredictable per RFC requirements, but the insecure generator made it predictable. Attackers could recover this key from observed network traffic and compute or link device addresses, defeating privacy protections.

Detection Guidance

This vulnerability is specific to Zephyr RTOS systems using IPv6 with CONFIG_NET_IPV6_IID_STABLE or CONFIG_NET_IPV6_PE enabled. Detection requires checking if your Zephyr build uses sys_rand_get() for IPv6 IID generation. Inspect the source code for gen_stable_iid() in subsys/net/ip/ipv6.c and gen_temporary_iid() in subsys/net/ip/ipv6_pe.c. No direct network commands detect this as it involves internal entropy sources.

Impact Analysis

An attacker could track your device across different networks by predicting its IPv6 addresses. They could also target your device directly without scanning, as stable IIDs become computable. This weakens privacy protections designed to prevent device tracking and address prediction.

Mitigation Strategies
  • Upgrade Zephyr RTOS to version 4.5.0 or later where the fix is applied.
  • Ensure CONFIG_NET_IPV6_IID_STABLE and CONFIG_NET_IPV6_PE are disabled if not required, as they are experimental and disabled by default.
  • Verify that sys_csrand_get() is used for IPv6 IID generation instead of sys_rand_get().

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-19742. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart