Skip to main content

OpenWrt odhcpd CVE-2026-62948

| EUVDEUVD-2026-44748 CRITICAL
Cross-site Scripting (XSS) (CWE-79)
2026-07-15 GitHub_M
9.6
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Gain L2 access to DHCP link
  2. Delivery
    Send lease request with crafted FQDN hostname
  3. Exploit
    odhcpd writes unescaped forged line to leases file
  4. Execution
    Admin opens LuCI Active Leases page
  5. Persist
    dom.append renders payload as live HTML
  6. Impact
    Execute JS in admin session, alter router config

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires odhcpd running as the DHCPv6/DHCPv4 server, which is the default OpenWrt configuration, and an attacker able to send DHCP requests on the local link with a crafted FQDN option 39 / option 12 hostname carrying an embedded newline plus HTML/JS. Critically, the payload only executes when an authenticated administrator opens the LuCI Status → Active DHCPv6 Leases (or DHCPv4 leases) admin page (UI:R) - it does not fire autonomously. Limiting factors: the attacker must be network-adjacent to the DHCP segment (DHCP is link-local, not routable Internet-wide), and no exploitation occurs without an admin viewing the affected LuCI page, so this is opportunistic rather than automatable.

Impact

The NVD CVSS 3.1 score is 9.6 (AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H), reflecting an unauthenticated injector, scope change into the admin session, and full C/I/A impact on a router. However, several signals temper the raw score. First, the attack vector is realistically network-adjacent rather than truly remote: DHCPv6/DHCPv4 exchanges occur on the local link, so the attacker generally needs L2 access to the DHCP segment (AV:A is a more defensible metric than AV:N - verify against your deployment topology). Second, UI:R is a genuine gate - exploitation only fires when an administrator opens the LuCI leases status page, making this opportunistic rather than automatable. There is no EPSS score, no KEV listing, and no POC in the provided data, so this is a high-severity-by-construction issue without evidence of active exploitation. Given XSS in a router admin panel can pivot to full device configuration changes, it remains a real patch priority for exposed or multi-tenant LAN environments, but it is not a wormable internet-facing RCE.

Exploit ScenarioDerived

An attacker with access to the LAN/DHCP link connects a device that requests a lease with a crafted DHCPv6 FQDN option 39 (or DHCPv4 option 12) hostname containing an embedded newline and an HTML/JavaScript payload. odhcpd writes the forged line into /tmp/odhcpd.leases, and when the router administrator later opens the LuCI Active DHCPv6 Leases page, the payload executes in their authenticated session, allowing router configuration changes. No public POC is identified at time of analysis; the network-adjacent vector plus required admin page view (UI:R) make this opportunistic.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jul 15, 2026

Stored cross-site scripting in OpenWrt's default odhcpd server (all releases prior to 25.12.5) lets a network-adjacent DHCP client inject forged lease records that execute as HTML/JavaScript in a router administrator's browser. The client-supplied DHCPv6 FQDN option 39 (and DHCPv4 option 12) hostname is written unescaped into /tmp/odhcpd.leases, enabling newline injection of attacker-controlled fields that LuCI's Active DHCPv6 Leases page renders via unsafe dom.append. No public exploit is identified at time of analysis, and the flaw is not in CISA KEV; it is fixed in 25.12.5.

RemediationAI

Vendor-released patch: OpenWrt 25.12.5 - upgrade firmware via the OpenWrt Firmware Selector (https://firmware-selector.openwrt.org/?version=25.12.5) or the release page (https://github.com/openwrt/openwrt/releases/tag/v25.12.5), which also bundles fixes for several other odhcpd CVEs (CVE-2026-53921, -53918, -53920, -53922, -55606). If you cannot immediately flash new firmware, cherry-pick the odhcpd fix (PR #404, adding statefiles_escape_hostname) and the LuCI '%h'.format() escaping commit (55379d04). As compensating controls until patched: avoid opening the LuCI Status → Active DHCP Leases page (the sink that triggers execution), since the payload only fires on admin view; restrict which hosts can obtain leases by binding odhcpd/dnsmasq to trusted VLANs and enforcing L2 segmentation so untrusted clients cannot register hostnames; and limit LuCI admin access to a management network. Note the trade-off: not viewing the leases page reduces operational visibility, and segmenting DHCP clients may break flat-network device discovery.

Affected VersionsENISA

OpenWRT < 25.12.5

Affected Packages

euvd openwrt fix: 25.12.5

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 vulnerability spans two components. In odhcpd (the combined DHCPv6/DHCPv4/RA server enabled by default on OpenWrt), src/statefiles.c functions statefiles_write_state6() and statefiles_write_state4() serialize each lease as a space-delimited, line-based record into /tmp/odhcpd.leases. Because DNS labels may legally carry arbitrary octets (RFC 2181 §11) and the option parser copies bytes verbatim, an attacker-controlled hostname could embed a newline (forging an extra lease line) or a space (forging additional fields). On the display side, LuCI rpcd-mod-luci getDHCPLeases feeds these fields into 40_dhcp.js, which used dom.append (luci.js) to insert the host and vendor strings as live DOM nodes without the '%h' HTML-escaping format specifier. This is a classic CWE-79 stored/persistent XSS: untrusted input crosses a trust boundary from an unauthenticated network client into an authenticated admin web context. The fix escapes non-LDH hostname bytes as \xNN in odhcpd and applies '%h'.format() on the host/vendor fields in LuCI.

Know when Openwrt 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 (GitHub_M) PRIMARY 9.6 CRITICAL
AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H
vuln.today AI 8.8 HIGH

DHCP is link-local so AV:A over NVD's AV:N; unauthenticated client (PR:N) but admin must view the leases page (UI:R); XSS in admin session crosses scope (S:C) enabling full router config C/I/A.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

2
Patch available
Jul 15, 2026 - 21:18 EUVD
CVE Published
Jul 15, 2026 - 17:50 cve.org
CRITICAL 9.6

DescriptionCVE.org

OpenWrt is a Linux operating system targeting embedded devices. Prior to 25.12.5, odhcpd writes a DHCPv6 client FQDN option 39 hostname into /tmp/odhcpd.leases through src/statefiles.c statefiles_write_state6() and statefiles_write_state4() without escaping, allowing newline injection of forged lease lines that LuCI rpcd-mod-luci getDHCPLeases displays through htdocs/luci-static/resources/view/status/include/40_dhcp.js and htdocs/luci-static/resources/luci.js dom.append as live HTML in the Active DHCPv6 Leases admin page. This vulnerability is fixed in 25.12.5.

Executive ViewAI

Why It Matters

OpenWrt routers running versions prior to 25.12.5 contain a critical vulnerability (CVSS 9.6) that allows attackers with network access to inject malicious code into administrator interfaces, potentially enabling complete unauthorized network control. Any organization using OpenWrt deployments is at risk of administrative compromise; no public exploitation has been identified at time of analysis.

Business Impact: Severe
Compensating Controls

Apply vendor patch: upgrade to OpenWrt 25.12.5

Threat Intelligence Overview

EPSS Score
0.3%
Top 77% exploitable
Prevalence
High
most widely used open-source firmware on home and embedded routers
Data Quality
6 sources
Confidence: High

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 CRITICAL
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
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
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
Very High
Technical Impact
Total

Priority Score

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

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

CVE-2024-20017 CRITICAL POC
9.8 Mar 04

In wlan service, there is a possible out of bounds write due to improper input validation. Rated critical severity (CVSS

CVE-2020-7982 HIGH POC
8.1 Mar 16

An issue was discovered in OpenWrt 18.06.0 to 18.06.6 and 19.07.0, and LEDE 17.01.0 to 17.01.7. Rated high severity (CVS

CVE-2019-15513 HIGH POC
7.5 Aug 23

An issue was discovered in OpenWrt libuci (aka Library for the Unified Configuration Interface) before 15.05.1 as used o

CVE-2018-19630 MEDIUM POC
6.1 Nov 28

cgi_handle_request in uhttpd in OpenWrt through 18.06.1 and LEDE through 17.01 has unauthenticated reflected XSS via the

CVE-2025-20654 CRITICAL
9.8 Apr 07

In wlan service, there is a possible out of bounds write due to an incorrect bounds check. Rated critical severity (CVSS

CVE-2019-5102 MEDIUM POC
5.9 Nov 18

An exploitable information leak vulnerability exists in the ustream-ssl library of OpenWrt, versions 18.06.4 and 15.05.1

CVE-2019-5101 MEDIUM POC
5.9 Nov 18

An exploitable information leak vulnerability exists in the ustream-ssl library of OpenWrt, versions 18.06.4 and 15.05.1

CVE-2025-20674 CRITICAL
9.8 Jun 02

Remote privilege escalation in Android WLAN AP driver via packet injection.

CVE-2025-20683 CRITICAL
9.8 Jul 08

In wlan AP driver, there is a possible out of bounds write due to an incorrect bounds check. This could lead to local es

CVE-2025-20682 CRITICAL
9.8 Jul 08

In wlan AP driver, there is a possible out of bounds write due to an incorrect bounds check. This could lead to local es

CVE-2025-20681 CRITICAL
9.8 Jul 08

In wlan AP driver, there is a possible out of bounds write due to an incorrect bounds check. This could lead to local es

CVE-2026-30872 CRITICAL
9.8 Mar 19

Remote code execution in OpenWrt's mDNS daemon (versions before 24.10.6 and 25.12.1) allows unauthenticated attackers to

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy