Severity by source
AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H
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.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
4DescriptionCVE.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.
AnalysisAI
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.
Technical ContextAI
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.
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.
In wlan service, there is a possible out of bounds write due to improper input validation. Rated critical severity (CVSS
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
cgi_handle_request in uhttpd in OpenWrt through 18.06.1 and LEDE through 17.01 has unauthenticated reflected XSS via the
In wlan service, there is a possible out of bounds write due to an incorrect bounds check. Rated critical severity (CVSS
An exploitable information leak vulnerability exists in the ustream-ssl library of OpenWrt, versions 18.06.4 and 15.05.1
An exploitable information leak vulnerability exists in the ustream-ssl library of OpenWrt, versions 18.06.4 and 15.05.1
Remote privilege escalation in Android WLAN AP driver via packet injection.
In wlan AP driver, there is a possible out of bounds write due to an incorrect bounds check. This could lead to local es
In wlan AP driver, there is a possible out of bounds write due to an incorrect bounds check. This could lead to local es
In wlan AP driver, there is a possible out of bounds write due to an incorrect bounds check. This could lead to local es
Remote code execution in OpenWrt's mDNS daemon (versions before 24.10.6 and 25.12.1) allows unauthenticated attackers to
Remote code execution in OpenWrt mdns daemon (versions before 24.10.6 and 25.12.1) allows unauthenticated attackers to c
Same weakness CWE-79 – Cross-site Scripting (XSS)
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-44748