Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconReach 9router HTTP interface over network
-
DeliveryLog in with default password 123456
-
ExploitSpoof Host header to bypass LOCAL_ONLY gate
-
InstallRegister malicious MCP plugin (node -e payload)
-
C2Trigger plugin SSE endpoint
-
ExecuteSpawn unvalidated command via child_process
-
ImpactExecute arbitrary code on host 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 that 9router 0.4.59 is network-reachable and still uses the hardcoded default password (123456), which is present on any fresh, unmodified installation; the attacker must send a forged Host header matching the value the LOCAL_ONLY gate expects for localhost to bypass the network restriction; and the MCP plugin-registration feature must be reachable so a plugin with an attacker-controlled command can be added and its SSE endpoint subsequently triggered to execute. Limiting factors: if the operator has changed the default password, bound the service to loopback at the OS/network level (so a spoofed Host header cannot bypass source-address filtering), or disabled MCP plugin registration, the chain breaks. The CVSS PR:L reflects a login step, but because the required credential is a public constant on default installs, that authentication is not a meaningful barrier. |
| Impact | All available signals point to genuine high priority for anyone running the affected version. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H with subsequent-system SC/SI/SA:H, score 9.4) indicates network reach, low complexity, no user interaction, and full compromise that spreads beyond the vulnerable component to the host OS - consistent with the described arbitrary code execution. The vector lists PR:L, but the description states the login uses a hardcoded default password present on every fresh install, which in practice is equivalent to no authentication; this is a notable tension - the 'privilege' required is a publicly known constant, so real-world exploitability is closer to PR:N than the assigned PR:L. No EPSS score, KEV entry, or explicit POC flag was provided, so exploitation probability cannot be quantified and there is no evidence of active exploitation; the risk rests on the clearly documented, low-effort attack chain rather than observed in-the-wild use. The main mitigating factor is deployment footprint: 9router is an obscure product, so exposure is likely limited to a small number of installs rather than being widespread. |
| Exploit ScenarioDerived | An attacker who can reach the 9router HTTP interface logs in using the well-known default password 123456, then sends requests carrying a spoofed Host header to satisfy the LOCAL_ONLY gate and reach internal routes. They register a malicious MCP plugin whose command is something like 'node -e <payload>', and when the plugin's SSE endpoint is triggered the payload is spawned as a child process, giving arbitrary code execution on the host. No public exploit was identified at time of analysis, but the advisory describes each step concretely enough to reproduce. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 23, 2026
Remote unauthenticated code execution in 9router 0.4.59 (by decolua) lets an attacker chain three flaws - a hardcoded default password (123456) accepted on any fresh install, a Host-header spoof that defeats the LOCAL_ONLY network gate, and unsanitized arguments reaching child_process.spawn() during MCP plugin registration - to run arbitrary OS commands on the host. The issue is fixed in 0.4.60, was reported by VulnCheck, and carries a CVSS 4.0 base score of 9.4; no public exploit identified at time of analysis, though the advisory describes a directly reproducible attack path.
RemediationAI
Primary fix: upgrade to 9router 0.4.60, which the vendor released to remediate the chain, per GHSA-4922-8r65-fq26 (https://github.com/decolua/9router/security/advisories/GHSA-4922-8r65-fq26) and the VulnCheck advisory (https://www.vulncheck.com/advisories/9router-before-remote-code-execution-via-default-password). If immediate patching is not possible, change the default password (123456) to a strong unique credential on every install to close the trivial login, which stops the entry point at the cost of nothing but an admin step; enforce the LOCAL_ONLY restriction at the network layer rather than trusting the application's Host-header check - for example bind the service to 127.0.0.1/loopback or place it behind a firewall or reverse proxy that validates the true source address, accepting that this blocks legitimate remote administration; and disable or restrict MCP plugin registration for untrusted users so unvalidated commands cannot reach child_process.spawn(), with the trade-off that plugin functionality is lost until patched.
Affected VersionsENISA
Affected Packages
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
9router is a routing/proxy service that supports MCP (Model Context Protocol) plugins, which it registers and launches as child processes. The root cause is CWE-78 (OS Command Injection): user-controllable plugin registration data (e.g. a command like 'node -e <payload>') is passed as unvalidated arguments to Node.js child_process.spawn(), so attacker-supplied input is executed by the host shell/runtime when the plugin's SSE (Server-Sent Events) endpoint is triggered. Two upstream weaknesses make this reachable remotely: authentication relies on a static default credential (CWE-798-style hardcoded password) rather than per-install secrets, and the LOCAL_ONLY access control trusts the client-supplied Host header, which is trivially forgeable, so 'local only' routes are exposed to remote clients. The single affected package per CPE is cpe:2.3:a:decolua:9router (all versions up to the 0.4.60 fix).
Know when 9Router 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:H/SI:H/SA:H
Hardcoded default password makes it effectively unauthenticated (PR:N), the chain is reliable and low-effort (AC:L), and MCP plugins execute on the host OS beyond the app, so scope changes (S:C) with full C/I/A impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
9router 0.4.59 (fixed in 0.4.60) contains a chain of vulnerabilities: a hardcoded default password (123456) that authenticates any fresh installation, a bypass of the LOCAL_ONLY network gate via a spoofed Host header, and unvalidated arguments passed to child_process.spawn() when registering MCP plugins. A remote, unauthenticated attacker can log in with the default credential, spoof the Host header to reach local-only routes, and register a malicious MCP plugin (e.g. node -e <payload>) to achieve arbitrary code execution on the host operating system when the plugin's SSE endpoint is triggered.
Executive ViewAI
9router 0.4.59 contains a critical remote code execution vulnerability allowing unauthenticated attackers to execute arbitrary OS commands by exploiting default credentials, network boundary bypass, and command injection during plugin registration. This poses an immediate risk to any organization using fresh installations and requires urgent patching to prevent full system compromise.
Apply vendor patch: upgrade to 9router 0.4.60. If upgrade cannot be completed within 24 hours, change default credentials, restrict network access via firewall, and disable MCP plugin registration until patched.
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.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Unauthenticated CRUD on the provider-management API in 9Router (through 0.4.41) lets remote attackers with no credential
Server-Side Request Forgery (SSRF) in 9Router 0.5.4 and earlier allows unauthenticated remote attackers to probe interna
Authentication bypass in 9Router (npm package '9router') before 0.5.6 lets a remote, unauthenticated attacker reach the
Remote authorization bypass in decolua 9router up to version 0.3.47 allows unauthenticated network attackers to access t
Improper restriction of excessive authentication attempts (CWE-307) in the 9Router AI router package (decolua/9router) b
Unauthenticated API key disclosure in 9Router (npm package '9router' by decolua) through version 0.4.41 lets any remote
Authenticated remote code execution in 9Router before 0.5.2 lets a logged-in attacker run arbitrary OS commands on the h
Unauthenticated information disclosure in 9Router (decolua/9router) through version 0.4.41 lets remote attackers read ev
Authentication bypass in 9Router (AI router & token saver) prior to 0.5.4 lets any authenticated user disable applicatio
Authorization-gate bypass in 9Router (decolua/9router) before 0.5.2 lets a remote unauthenticated attacker reach protect
Server-side request forgery in 9Router before 0.4.72 lets an authenticated (PR:L) or locally-connected user abuse the /v
Authentication bypass in 9Router (decolua/9router) versions prior to 0.5.2 lets remote unauthenticated attackers reach p
EUVD-2026-48436
GHSA-qvg7-rqwf-6wmh
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB