Skip to main content

openNDS CVE-2026-38822

| EUVDEUVD-2026-67362 HIGH
OS Command Injection (CWE-78)
2026-08-28 mitre GHSA-2h6c-w4mg-27v5
7.6
CVSS 3.1 · Vendor: mitre
View

Attack ChainAIDerived

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

  1. Access
    Connect to network segment hosting openNDS captive portal
  2. Delivery
    Authenticate through captive portal login flow
  3. Exploit
    Craft HTTP GET request with semicolon-injected shell command in query parameter key
  4. Execution
    client_params.sh passes unsanitized key to shell command
  5. Persist
    Execute arbitrary OS commands as openNDS daemon (typically root)
  6. Impact
    Full router compromise

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 two concrete prerequisites: the attacker must have successfully authenticated to the openNDS captive portal (PR:L - a captive portal login is sufficient, no administrator or privileged account is needed), and must be on the same adjacent network segment as the captive portal interface (AV:A). The vulnerable code path is only triggered when the client_params.sh script is invoked to serve the authenticated client status page - meaning the feature must be active, which it is by default in a standard openNDS deployment. No additional non-default configuration is required. Exploitation is bounded by the adjacency requirement (internet-based attackers without network presence cannot directly reach the portal) and by the need to complete captive portal authentication before injecting commands. The injection point is specifically the query parameter key name, not the value, which may bypass naive input filters that only sanitize parameter values.

Impact

The CVSS 7.6 score with vector AV:A/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L accurately reflects the real-world risk profile. The adjacent-network vector (AV:A) confines the attacker pool to users already on the same broadcast domain as the captive portal interface, which meaningfully limits internet-scale exposure. PR:L requires successful captive portal authentication before exploitation, adding a second barrier. However, the technical impact is severe: openNDS typically runs as root on OpenWrt devices, so successful command injection yields full router compromise including confidentiality and integrity of all traffic passing through the device. No EPSS data was provided in the available intelligence, and no KEV listing or POC code has been identified - these are unknown rather than confirmed-absent. Even small-scale operators running openNDS-based hotspots for guest or public Wi-Fi should treat this as high priority, given that the captive portal's authenticated user base represents an already semi-trusted attacker population with reliable adjacent access.

Exploit ScenarioDerived

An attacker authenticates to the openNDS captive portal through normal means, then crafts an HTTP GET request to the client status page with a URL query parameter key containing a semicolon followed by an arbitrary shell command - for example, GET /status?legit;id=value. The client_params.sh script processes the parameter key without sanitization and passes it to a shell invocation, executing the injected command in the context of the openNDS daemon. Because openNDS typically runs as root on OpenWrt, this grants full device control. No public POC has been identified at time of analysis.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.8% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Aug 28, 2026

OS command injection in openNDS before 11.0.0 allows an authenticated captive portal user to execute arbitrary shell commands on the host router by embedding semicolons in HTTP GET query parameter names sent to the client_params.sh script. The daemon-invoked script passes unsanitized parameter keys directly into shell commands, making the exploitation straightforward once an attacker has portal authentication. No public exploit or CISA KEV listing has been identified at time of analysis; an upstream fix is available targeting version 11.0.0.

RemediationAI

Upgrade openNDS to version 11.0.0 or later, which incorporates the fix from commit 294983e859bb678eef7db06fc9f6afab0b489d8e (https://github.com/openNDS/openNDS/commit/294983e859bb678eef7db06fc9f6afab0b489d8e) - this adds URL-encoding sanitization of all configuration parameters before shell interpolation, directly eliminating the injection vector. If an immediate upgrade is not feasible, consider disabling the authenticated client status page feature in openNDS configuration if it is not operationally required; this removes the vulnerable code path entirely but will affect the user-facing portal experience. As a secondary compensating control, restrict which network segments can reach the captive portal interface using firewall rules (e.g., iptables on OpenWrt), reducing the pool of attackers who satisfy the AV:A adjacency requirement. Note that authentication to the captive portal is itself a limiting factor - hardening or rate-limiting the portal authentication flow reduces the risk surface further.

Affected VersionsENISA

openNDS 0 <11.0.0

Affected Packages

euvd opennds fix: 11.0.0

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

openNDS is an open-source captive portal daemon designed for OpenWrt and embedded Linux routers. The vulnerable component is client_params.sh, a shell script invoked by the openNDS daemon to render the authenticated client status page. CWE-78 (Improper Neutralization of Special Elements Used in an OS Command) describes the root cause: HTTP GET query parameter keys sourced from user-controlled input are interpolated into shell commands without sanitization, permitting metacharacter injection via semicolons. The CPE string cpe:2.3:a:opennds:opennds:*:*:*:*:*:*:*:* covers all versions prior to 11.0.0. The fix in commit 294983e introduces a urlencode() function and a get_option_from_config() wrapper that sanitizes values through sed and awk substitution before any shell interpolation occurs.

Know when Opennds 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 (mitre) PRIMARY 7.6 HIGH
AV:A/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L
vuln.today AI 7.6 HIGH

Adjacent-only reach and captive portal authentication (PR:L) bound the attacker pool; shell injection on a root-running daemon yields high C/I; A:L reflects partial disruption rather than full denial.

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

Primary rating from Vendor (mitre).

CVSS VectorVendor: mitre

Attack Vector
Adjacent
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
Low

Lifecycle Timeline

2
Patch available
Aug 28, 2026 - 04:16 EUVD
CVE Published
Aug 28, 2026 - 00:12 cve.org
HIGH 7.6

DescriptionCVE.org

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.

Executive ViewAI

Why It Matters

openNDS before version 11.0.0 contains an OS command injection vulnerability allowing authenticated captive portal users to execute arbitrary shell commands on router hosts. Organizations running openNDS for guest network access face potential compromise of network infrastructure and loss of captive portal security controls.

Business Impact: High
Compensating Controls

Apply vendor patch: upgrade to openNDS 11.0.0.

Threat Intelligence Overview

EPSS Score
0.8%
Top 45% exploitable
Prevalence
Low
niche open-source captive portal daemon for OpenWrt routers
Social Media
1
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment CIRCL GitHub VulDB

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 HIGH
CISA KEV No
Public POC No
EPSS 0.8%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
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
Scheduled
Exploitation
None
System Exposure· derived
Controlled
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

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

Attack Technique

OS command injection occurs when an application passes unsanitized user input directly into system shell commands.

Related Vulnerabilities in openNDS Memory and Command Injection Flaws

View all 4

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