CVE-2026-49353

9Router: Local-Only Access Gate Bypass in 9router via Host Header SpoofING

Published Jul 15, 2026 CVSS 3.1 · 7.5 High EPSS < 1% KEV · Not listed
Description
9Router is an AI router & token saver. In 0.4.45 and earlier, 9Router's src/dashboardGuard.js local-only access gate used Host and Origin headers in isLocalRequest() to protect /api/mcp/*, /api/tunnel/*, and /api/cli-tools/*, allowing header spoofing in reverse proxy or tunnel deployments to reach MCP child process stdin paths.

Analysis

AI-generated

Technical impact

9Router is an AI router & token saver. In version 0.4.45 and earlier, the local‑only access gate implemented in src/dashboardGuard.js uses the Host and Origin headers in its isLocalRequest() function to secure the /api/mcp/*, /api/tunnel/*, and /api/cli-tools/* endpoints. This check was intended to allow only local‑only requests, but it fails to properly validate the headers, enabling an attacker to spoof Host or Origin headers when 9Router is deployed behind a reverse proxy or tunnel. The spoofed headers allow the attacker to reach the MCP child process stdin paths, effectively bypassing authentication and potentially enabling unintended actions on the host. This vulnerability is identified as CWE‑290.

Affected Systems

The CVE affects the 9Router AI router from decolua. Versions 0.4.45 and older are impacted. The vulnerability was fixed in release v0.4.46 and later, so any deployment running an earlier release is susceptible.

Risk and Exploitability

The CVSS score of 7.5 indicates a high severity flaw, but the EPSS score is below 1%, suggesting that, as of the latest data, the probability of exploitation is low. The vulnerability is not listed in the CISA KEV catalog. Exploitation requires an attacker to be able to send HTTP requests with arbitrary Host or Origin headers to the 9Router instance, typically through a reverse proxy or tunnel configuration that does not enforce header validation. Based on the description, it is inferred that if an attacker can control these headers, they may be able to access privileged API routes and potentially interact with the MCP child process via its stdin paths, which could enable further unauthorized actions.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade to 9Router v0.4.46 or later, which restores proper Host and Origin header validation in the local‑only access gate.
  • If an immediate upgrade is not possible, configure any reverse proxy or tunnel in front of 9Router to reject or rewrite Host and Origin headers that do not match the expected value for the 9Router instance, effectively preventing header spoofing.
  • Consider temporarily disabling or segregating the /api/mcp/*, /api/tunnel/*, and /api/cli‑tools/* endpoints until a patch can be applied, or place them behind a network segment accessible only to trusted administrators.

Generated by OpenCVE AI on July 31, 2026 at 02:44 UTC.

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Github GHSA Github GHSA GHSA-6g2f-w7g3-77vf 9router has an Incomplete Fix: Local-Only Access Gate Bypass in 9router via Host Header SpoofING
History
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
First Time appeared Decolua
Decolua 9router
Vendors & Products Decolua
Decolua 9router
Type Values Removed Values Added
Description 9Router is an AI router & token saver. In 0.4.45 and earlier, 9Router's src/dashboardGuard.js local-only access gate used Host and Origin headers in isLocalRequest() to protect /api/mcp/*, /api/tunnel/*, and /api/cli-tools/*, allowing header spoofing in reverse proxy or tunnel deployments to reach MCP child process stdin paths.
Title 9Router: Local-Only Access Gate Bypass in 9router via Host Header SpoofING
Weaknesses CWE-290
References
Metrics cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:H/A:N'}

Weaknesses
  • CWE-290

    Authentication Bypass by Spoofing

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
Jul 16, 2026, 3:12 PM
Reserved
May 29, 2026, 2:35 PM
Status
Deferred
Published
Jul 15, 2026, 9:16 PM
Modified
Oct 24, 2026, 9:10 PM