Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessPosition within 802.15.4 radio range of uncommissioned device
-
DeliveryRun stock Thread commissioner registered with public PSKd J01NME
-
ExploitComplete DTLS-PSK joiner handshake
-
ExecutionDevice enables Thread with attacker operational dataset
-
ImpactAttacker becomes router and MITMs all device IPv6 traffic
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Default credential prevention
|
| Exploitation Conditions | Requires a firmware image built with CONFIG_OPENTHREAD_JOINER_AUTOSTART=y while CONFIG_OPENTHREAD_JOINER_PSKD was left at the removed default 'J01NME' (or any publicly known value), and a target device with no stored/commissioned operational dataset - i.e. factory-fresh, after a factory reset, or after a settings erase. The attacker must be within 802.15.4 radio range (AV:A) and operate a Thread commissioner registered with that same PSKd. Limiting factors that reduce real-world exposure: joiner autostart is NOT enabled by default and no in-tree Zephyr sample ships the vulnerable combination; exploitation is only possible during the device's uncommissioned joining window; and application-layer security using independently provisioned credentials still survives the network-layer takeover. The device remains mis-provisioned until reset. |
| Impact | Signals are mixed and net out below the raw 7.5/High CVSS headline. The CVSS vector itself is the main limiter: AV:A confines the attacker to 802.15.4 radio range (no internet-facing exposure), and AC:H reflects that the target must be caught in its uncommissioned joining window (factory-fresh, post-factory-reset, or post-settings-erase). PR:N/UI:N confirm no authentication or user interaction is needed once those conditions hold, and C:H/I:H/A:H is justified because a successful join makes the attacker the device's Thread router with full see/drop/inject/spoof control over its IPv6 traffic. The decisive mitigating factor is not in the CVSS base metrics at all: exposure is gated on an opt-in, non-default build configuration (CONFIG_OPENTHREAD_JOINER_AUTOSTART=y with the PSKd left at the public default), and the advisory confirms no in-tree Zephyr sample ships the vulnerable combination. No CISA KEV listing and no EPSS score are provided in the input, so there is no evidence of active or widespread exploitation; a full commissioner proof-of-concept is published in the GHSA advisory, which raises practical risk for any product that did ship the vulnerable combination. The vuln.today Decision label is this_week (not act_now/emergency). Net assessment: a genuine, high-impact misconfiguration-class weakness (CWE-1392, default credential) for the specific subset of products that enabled joiner autostart without overriding the PSKd, but not a broad-fleet emergency given it is off by default and adjacency-only. |
| Exploit ScenarioDerived | An attacker standing within 802.15.4 radio range of a vulnerable Zephyr device that has just booted factory-fresh or been reset runs any stock Thread commissioner pre-registered with the public PSKd 'J01NME'. Because the device auto-starts a joiner and authenticates solely on that non-secret credential, the DTLS-PSK handshake succeeds and the attacker hands over an attacker-controlled operational dataset, making the device join the attacker's mesh. A complete commissioner PoC is published in the GHSA advisory; exploitation requires the device to be in its uncommissioned joining window. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 23, 2026
Zephyr's OpenThread joiner autostart can cause an uncommissioned device to join an attacker-controlled Thread mesh because the build defaulted to the public Joining Device Credential 'J01NME'. Builds with CONFIG_OPENTHREAD_JOINER_AUTOSTART=y that leave CONFIG_OPENTHREAD_JOINER_PSKD unset are affected, and an attacker within 802.15.4 radio range running a commissioner with that same PSKd can complete commissioning and supply an arbitrary operational dataset. A reporter-supplied PoC reference exists but is not independently verified as working exploit code; joiner autostart is not enabled by default and no in-tree Zephyr sample uses the vulnerable combination.
RemediationAI
Apply the upstream fix in commit acb3e514d7fab2bc9672acaba8019d2dc91b187c or update to 4.5.0, the projected fixed release; the advisory states the fix is merged on main but not yet released, so confirm 4.5.0 availability before relying on it. For source builds, remove any reliance on the J01NME default by setting CONFIG_OPENTHREAD_JOINER_PSKD to a unique 6-to-32-character uppercase alphanumeric credential per device, provisioning it from factory data, and registering the same PSKd on the intended commissioner. Prefer disabling CONFIG_OPENTHREAD_JOINER_AUTOSTART and calling otJoinerStart() from the application with the per-device PSKd, which avoids compiling an identical credential into every unit but requires the application to handle commissioning explicitly. If patching or re-provisioning is not immediately possible, disable joiner autostart, which prevents the automatic join but requires manual commissioning instead. Application-layer security with independently provisioned credentials remains effective even if network-layer commissioning is taken over. See https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-6j2r-xrm4-3v7f and https://github.com/zephyrproject-rtos/zephyr/commit/acb3e514d7fab2bc9672acaba8019d2dc91b187c.
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
OpenThread is Zephyr's Thread stack; Thread commissioning uses a Joining Device Credential (PSKd) as the only value that authenticates a DTLS-PSK handshake between joiner and commissioner, after which the commissioner provides the operational dataset. In the affected code, CONFIG_OPENTHREAD_JOINER_PSKD had a Kconfig default of "J01NME" in modules/openthread/Kconfig.thread (previously under subsys/net/l2/openthread), and ot_configure_instance() in modules/openthread/openthread.c calls otJoinerStart() when CONFIG_OPENTHREAD_JOINER_AUTOSTART=y and otDatasetIsCommissioned() is false. On a successful join, ot_joiner_start_handler() calls otThreadSetEnabled(), so the device commits to the commissioner-supplied dataset and can be made a child of the attacker's mesh. This is CWE-1392 (use of default credentials): the root cause is a build-time default secret, not a memory-safety flaw. The advisory narrows affected releases to >= 1.14.0 and <= 4.4.2; the CPE cpe:2.3:a:zephyrproject:zephyr:*:*:*:*:*:*:*:* covers the product family. Exposure requires the opt-in autostart configuration and an uncommissioned device; the trigger is not a race or timing condition, and the CVSS AV:A/AC:H metrics reflect proximity and the need to operate a compatible commissioner during the joining window.
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:A/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Adjacent 802.15.4 range (AV:A); needs the device in its uncommissioned joining window plus a non-default vulnerable build (AC:H); no auth or interaction (PR:N/UI:N); full network-layer MITM gives C/I/A High.
Primary rating from Vendor (zephyr).
CVSS VectorVendor: zephyr
DescriptionCVE.org
Zephyr's OpenThread integration defined CONFIG_OPENTHREAD_JOINER_PSKD with default "J01NME" in modules/openthread/Kconfig.thread (previously subsys/net/l2/openthread/Kconfig, then subsys/net/l2/openthread/Kconfig.thread). J01NME is the example Joining Device Credential used throughout the public OpenThread and Thread commissioning documentation, including Zephyr's own samples/net/sockets/echo_client/README.rst, so it is not a secret. A firmware image built with CONFIG_OPENTHREAD_JOINER_AUTOSTART=y that never overrode the PSKd therefore shipped with a publicly known joining credential compiled in, with no build-time or run-time warning.
The PSKd is the only value that authenticates Thread commissioning: joiner and commissioner run a DTLS-PSK handshake keyed on it, after which the commissioner supplies the full operational dataset. In ot_configure_instance() (modules/openthread/openthread.c), a device with no stored dataset calls otJoinerStart() with the configured PSKd, and ot_joiner_start_handler() calls otThreadSetEnabled() on success. An unauthenticated attacker within 802.15.4 radio range of an uncommissioned device (factory-fresh, after a factory reset, or after a settings erase) can run any stock Thread commissioner registered with J01NME, complete the handshake, and hand the device an attacker-controlled operational dataset.
The device then joins and enables Thread on the attacker's mesh. The attacker becomes its router, seeing, dropping, injecting and spoofing all of the device's IPv6 traffic and impersonating the peers the application expects, while the device is cut off from the network it was meant to join and stays mis-provisioned until it is reset. Only application-layer security with independently provisioned credentials survives. Exposure is limited to builds that enable joiner autostart and leave the PSKd unset; the option is not enabled by default and no in-tree sample uses the vulnerable combination.
The fix removes the default from CONFIG_OPENTHREAD_JOINER_PSKD and adds a BUILD_ASSERT() in modules/openthread/openthread.c, active only under CONFIG_OPENTHREAD_JOINER_AUTOSTART, that fails the build unless a 6-to-32-character PSKd is configured. Products should provision a per-device PSKd from factory data and call otJoinerStart() from the application rather than relying on a credential compiled identically into every unit.
Technical POC Analysis
CWE-1392: Use of Default Credentials.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Zephyr-based IoT products built with OpenThread joiner autostart enabled and no custom PSKd are vulnerable to unauthorized commissioning by an attacker within radio range, allowing them to redirect the device into a rogue Thread mesh. This affects product security and could give adversaries persistent control over affected devices, undermining customer trust and regulatory compliance.
Apply vendor patch.
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-109139
NVD
CVE.org
EPSS
GitHub
Exploit-DB