CVE-2026-46339: decolua 9router unauthenticated RCE via MCP custom plugins

CVE-2026-46339 · Severity: critical · CVSS 10 · Published 2026-07-15

9Router, an AI routing and token management tool, contains a critical security flaw that allows unauthorized individuals to take complete control of the server. By sending two specific requests to unprotected parts of the application, an attacker can execute arbitrary commands without needing a username or password. This could lead to the theft of sensitive AI provider API keys, full access to the server's files, and potential disruption of all AI-related operations.

Technologies: 9router (npm). Vendors: npm.

Quick answers

Is CVE-2026-46339 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-46339 being exploited in the wild.
How severe is CVE-2026-46339?
Critical severity, with a CVSS score of 10, published 15 July 2026.
Which products and versions are affected?
9router (npm) >= 0.4.30, < 0.4.37, SEMVER:introduced=0.4.30,fixed=0.4.37.
Is there a fix for CVE-2026-46339?
Yes. 9router (npm): upgrade to 0.4.37 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-46339 attacked?
It is attacked over the network, in a network appliance.
Am I affected by CVE-2026-46339?
Check whether you run 9router (npm) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • 9router (npm): upgrade to 0.4.37 or later
    npm install 9router@0.4.37

Technical details

The vulnerability stems from a narrow allowlist in the Next.js middleware (src/proxy.js) which fails to protect the /api/cli-tools/* and /api/mcp/* routes. An unauthenticated attacker can chain two requests to achieve RCE: first, a POST request to /api/cli-tools/cowork-settings to register a 'customPlugin' with an arbitrary OS command and arguments; second, a GET request to /api/mcp/[plugin]/sse to trigger the 'spawn()' function in the MCP bridge (src/lib/mcp/stdioSseBridge.js). Because the application does not validate the command or arguments before execution, the attacker can gain a reverse shell or perform arbitrary file operations. The issue is fixed in version 0.4.37 by extending the middleware authentication matcher.

Affected products

  • decolua 9router >= 0.4.30, < 0.4.37

Identifiers

  • CVE-2026-46339
  • GHSA-fhh6-4qxv-rpqj

Timeline

  • 2026-05-13: patched: Fix released in version 0.4.37
  • 2026-07-15: advisory: GHSA-fhh6-4qxv-rpqj published

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.