ZeroHour

CVE-2026-38822

large

Authenticated OS Command Injection in openNDS Captive Portal

CVSS 3.1
7.6 high
EPSS
<1%p56
Published
()
Modified
AI analysis

openNDS before 11.0.0 contains an OS command injection flaw (CWE-78) in the client_params.sh helper script that the openNDS daemon invokes to serve the authenticated client status page. Because HTTP GET query parameter keys reach the shell without sanitization, an authenticated captive portal user can embed semicolons in a parameter name to inject and execute arbitrary shell commands on the gateway. An attacker who has already joined the captive-portal network gains command execution with the daemon's privileges, exposing sensitive device configuration and allowing configuration changes (CVSS: adjacent network, low privileges, high confidentiality/integrity impact). All deployments running openNDS prior to 11.0.0 are affected, including instances bundled with OpenWrt and other embedded router firmware. No public proof-of-concept or confirmed in-the-wild exploitation is known; EPSS estimates about a 0.8% probability of exploitation within 30 days and the flaw is not in CISA KEV.

What to do: Upgrade to openNDS 11.0.0 or later (update the opennds package on OpenWrt and other affected firmware). If upgrading is not immediately possible, restrict portal access to trusted users and filter or reject semicolons in URL query parameter keys at the front end. Prioritize reviewing internet-facing or guest-facing openNDS deployments, since those present the easiest attack path for authenticated users.

Affected
openNDS (open-source project; packaged for OpenWrt and embedded router firmware) openNDS captive portalall versions before 11.0.0
Estimated exposure
largelikely tens of thousands of deployed instances, many on public/guest Wi-Fi gateways — openNDS ships as a package in OpenWrt and other embedded router firmware and commonly runs on internet-facing guest networks; with no central install telemetry, the estimate follows the tens-of-thousands scale typically seen for…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

In openNDS before 11.0.0, the client_params.sh script, invoked by the openNDS daemon to serve the authenticated client status page, is vulnerable to OS command injection through crafted HTTP GET query parameter keys. An authenticated captive portal user can inject arbitrary shell commands by embedding semicolons in a URL query parameter name.

Weakness
CWE-78
Vector
CVSS:3.1/AV:A/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L

In the news

No ingested article mentions this CVE yet.