Skip to main content

9Router CVE-2026-59800

| EUVDEUVD-2026-42073 CRITICAL
OS Command Injection (CWE-78)
2026-07-07 disclosure@vulncheck.com GHSA-g6g7-pvmx-m74p
9.2
CVSS 4.0 · Vendor: vulncheck
View

Attack ChainAIDerived

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

  1. Access
    Discover exposed 9Router API
  2. Delivery
    POST crafted sudoPassword to /api/tunnel/tailscale-install
  3. Exploit
    Bypass middleware, reach 'sudo -S sh'
  4. Execution
    sudo does not prompt, sh runs input as command
  5. Impact
    Execute arbitrary commands as root

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 reaching the unauthenticated POST /api/tunnel/tailscale-install endpoint over the network (this specific route is not covered by the dashboard middleware matcher, so no authentication is needed) and supplying a crafted sudoPassword body field. The concrete limiting factor is the sudo state on the host: command execution only occurs when 'sudo -S sh' does NOT prompt for a password - i.e., the 9Router process already runs as root, sudoers has NOPASSWD for it, or a recent sudo timestamp cache is valid. On hardened deployments where sudo genuinely requires an uncached password, the injected value is consumed as a (wrong) password and code execution does not occur, which is the AT:P attack requirement reflected in the CVSS 4.0 vector.

Impact

This is a genuine high-priority issue rather than an inflated CVSS number: the CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N) describes network-reachable, low-complexity, unauthenticated exploitation with high confidentiality, integrity and availability impact, and code execution occurs as root. The single mitigating signal is AT:P (attack requirement present): exploitation only yields command execution when sudo does not prompt for a password (root context, NOPASSWD, or cached sudo timestamp), which is why the score is 9.2 rather than a full 10. Real-world urgency is elevated by exploitation evidence observed by the Shadowserver Foundation on 2026-07-04, indicating opportunistic scanning/exploitation against exposed instances. No EPSS score, SSVC decision, or explicit CISA KEV flag was provided in the input, so the exploitation-probability and formal automatable/decision signals are UNKNOWN here; the Shadowserver observation is the strongest exploitation signal available and should be treated as active targeting even though it is not a CISA KEV confirmation.

Exploit ScenarioDerived

An attacker scanning the internet for exposed 9Router dashboards sends a single crafted POST to /api/tunnel/tailscale-install with a sudoPassword body value containing shell metacharacters/commands. Because the route bypasses the dashboard authorization middleware and the underlying 'sudo -S sh' does not prompt (the service runs as root or has cached/NOPASSWD sudo), the injected string is executed by sh as root, giving full command execution with no authentication or user interaction. The low complexity and network vector make this trivially scriptable, consistent with the scanning activity Shadowserver reported on 2026-07-04.

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

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

Alert me

AnalysisAIv1 – Jul 07, 2026

Remote unauthenticated OS command injection in 9Router before 0.4.44 lets attackers run arbitrary commands as root via the POST /api/tunnel/tailscale-install endpoint, which is excluded from the dashboard authorization middleware. The attacker-supplied sudoPassword field is piped to the stdin of a 'sudo -S sh' child process; when sudo does not prompt for a password, sh interprets that value as a shell command. Active exploitation evidence was reported by the Shadowserver Foundation on 2026-07-04; this is not (yet) listed in CISA KEV, and no public exploit code is referenced in the supplied data.

RemediationAI

Upgrade to 9Router 0.4.44 or later - Vendor-released patch: 0.4.44 - per GitHub advisory GHSA-g6g7-pvmx-m74p (https://github.com/decolua/9router/security/advisories/GHSA-g6g7-pvmx-m74p) and the VulnCheck advisory (https://www.vulncheck.com/advisories/9router-os-command-injection-via-sudopassword-parameter-in-tailscale-install-endpoint). If immediate patching is not possible, block or restrict network access to the /api/tunnel/tailscale-install endpoint at a reverse proxy or firewall (deny unauthenticated external access to the 9Router API/dashboard port), which prevents remote reach but will also break the Tailscale-install workflow. Reduce the impact of the sudo path by ensuring the 9Router service does not run as root and removing any NOPASSWD sudoers entry it relies on, and shorten or disable the sudo timestamp cache (timestamp_timeout=0) so a cached credential cannot be abused - note this may break other automation that depended on passwordless sudo. Because active exploitation has been observed, also inspect exposed hosts for post-exploitation activity rather than relying on mitigation alone.

Affected VersionsENISA

9router 0 <0.4.44

Affected Packages

npm 9router fix: 0.4.44

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in npm

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

9Router is an open-source tunneling/router management application (decolua/9router) that exposes an HTTP API and dashboard. The flawed route, /api/tunnel/tailscale-install, is intended to install Tailscale by elevating privileges through 'sudo -S sh', reading the sudo password from stdin. The root cause is CWE-78 (Improper Neutralization of Special Elements used in an OS Command): rather than being consumed solely as a password, the sudoPassword body field flows into the stdin of an interactive shell ('sh'). Compounding this, the route path is not matched by the dashboard middleware matcher, so no authentication or authorization is enforced before the privileged command path is reached. When sudo returns without prompting - because the process already runs as root, NOPASSWD is set in sudoers, or a recent sudo timestamp cache is valid - the string that was meant to be a password is instead read by sh as a command line.

Know when the next one hits your stack

  • 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 (vulncheck) PRIMARY 9.2 CRITICAL
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 8.1 HIGH

Network, unauthenticated (PR:N/UI:N) with root-level C/I/A impact, but AC:H because execution requires the non-default sudo condition (root/NOPASSWD/cached timestamp); no scope change so S:U.

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

Primary rating from Vendor (vulncheck).

CVSS VectorVendor: vulncheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Jul 07, 2026 - 20:01 EUVD

DescriptionCVE.org

9Router before 0.4.44 contains an OS command injection vulnerability in the unauthenticated POST /api/tunnel/tailscale-install endpoint (this route is not covered by the dashboard middleware matcher, so no authorization check is applied). The sudoPassword field from the request body is written to the stdin of a 'sudo -S sh' child process. When sudo does not prompt for a password (the process runs as root, NOPASSWD is configured, or a recent sudo timestamp cache exists), the sudoPassword value is interpreted by sh as a shell command, allowing a remote unauthenticated attacker to execute arbitrary OS commands. Exploitation evidence was first observed by the Shadowserver Foundation on 2026-07-04 (UTC).

Executive ViewAI

Why It Matters

A critical remote code execution vulnerability in 9Router (versions before 0.4.44) allows unauthenticated attackers to execute arbitrary commands with root privileges (CVSS 9.2), with exploitation activity reported by the Shadowserver Foundation. No vendor patch is currently available. Any organization using 9Router faces immediate and severe risk of complete infrastructure compromise.

Business Impact: Severe
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: (1) Network segmentation to isolate 9Router systems from critical infrastructure; (2) Firewall and WAF rules blocking POST requests to /api/tunnel/tailscale-install; (3) Disable the endpoint if not operationally required; (4) Implement IP-based access controls restricting who can reach the API; (5) Deploy IPS signatures detecting exploitation attempts; (6) Enable comprehensive audit logging for all 9Router API and system activity; (7) Increase monitoring for indicators of unauthorized root-level command execution and system compromise.

Threat Intelligence Overview

EPSS Score
1.4%
Top 31% exploitable
Prevalence
Low
niche open-source tunnel/router tool, small production footprint
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Social Media
3
Sightings
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA 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 CRITICAL
CISA KEV No
Public POC Yes
EPSS 1.4%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity + public POC available
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

67
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +46
PoC: +20
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.

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