Skip to main content

9Router CVE-2026-56675

| EUVDEUVD-2026-42932 HIGH
Improper Authentication (CWE-287)
2026-07-10 GitHub_M
8.3
CVSS 3.1 · Vendor: GitHub_M
Share

Severity by source

Vendor (GitHub_M) PRIMARY
8.3 HIGH
AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:L
vuln.today AI
8.3 HIGH

Unauthenticated remote HTTP (AV:N/PR:N/UI:N); scope change (S:C) because bypassing the guard exposes upstream provider credentials as a separate authority; low C/I/A reflecting enumeration and proxied-credential abuse rather than full compromise.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Changed
Confidentiality
Low
Integrity
Low
Availability
Low

Lifecycle Timeline

2
Patch available
Jul 10, 2026 - 18:01 EUVD
Analysis Generated
Jul 10, 2026 - 16:55 vuln.today

DescriptionCVE.org

9Router is an AI router & token saver. Prior to 0.5.2, 9router treats loopback requests as trusted and allows /v1/* access without an API key, so a same-host reverse proxy that forwards public traffic to the backend through 127.0.0.1 causes src/dashboardGuard.js to misclassify external requests as local. A remote unauthenticated attacker can access /v1 APIs such as /v1/models and may abuse configured upstream provider credentials through /v1 proxy endpoints depending on enabled providers. This issue is fixed in version 0.5.2.

AnalysisAI

Authentication bypass in 9Router (decolua/9router) versions prior to 0.5.2 lets remote unauthenticated attackers reach protected /v1/* proxy APIs because src/dashboardGuard.js trusts any request arriving over loopback. When 9Router runs behind a same-host reverse proxy that forwards public traffic through 127.0.0.1 - the standard production deployment - external requests are misclassified as local, exposing /v1/models and enabling abuse of configured upstream AI provider credentials. No public exploit identified at time of analysis; scored CVSS 8.3 with a scope change reflecting downstream provider-credential abuse.

Technical ContextAI

9Router is a Node.js AI request router / token-saver that fronts one or more upstream LLM providers and exposes an OpenAI-compatible /v1/* API surface plus a dashboard. Access control is enforced in src/dashboardGuard.js, which distinguishes local (trusted, no API key required) from external (must present an API key) callers. The flaw is a CWE-287 improper-authentication issue: the guard derives 'local' from the requesting socket address rather than an authenticated identity, so it treats the source IP 127.0.0.1 as inherently trusted. In a same-host reverse-proxy topology (e.g. nginx or Caddy proxying public traffic to the backend on localhost) the backend sees every forwarded request as originating from 127.0.0.1, collapsing the local/external distinction. Affected package per CPE is cpe:2.3:a:decolua:9router:*:* for all versions below 0.5.2.

RemediationAI

Vendor-released patch: version 0.5.2 - upgrade 9Router to 0.5.2 or later, which corrects the loopback-trust classification in src/dashboardGuard.js (fix commit da667836cc7584bea0edd893de1d590c9ea279dc; advisory GHSA-x5c9-v98j-722r). If you cannot upgrade immediately, stop relying on source-IP trust: configure the reverse proxy to require and forward an API key for all /v1/* traffic rather than letting 9Router auto-trust loopback, and restrict the backend so only the proxy can reach it. As a compensating control you can require the API key even for local requests (trade-off: breaks any legitimate keyless local tooling), or place authentication at the proxy layer (e.g. proxy-enforced auth on /v1/models and /v1 proxy endpoints) so unauthenticated external callers are rejected before reaching the backend - note this shifts the trust boundary to the proxy and must cover every /v1 path. Rotating any upstream provider credentials configured in 9Router is prudent if you suspect the endpoint was reachable while unpatched.

CVE-2026-59801 CRITICAL POC
9.3 Jul 13

Unauthenticated CRUD on the provider-management API in 9Router (through 0.4.41) lets remote attackers with no credential

CVE-2026-56677 HIGH POC
8.6 Aug 17

Server-Side Request Forgery (SSRF) in 9Router 0.5.4 and earlier allows unauthenticated remote attackers to probe interna

CVE-2026-63732 CRITICAL
9.4 Jul 23

Remote unauthenticated code execution in 9router 0.4.59 (by decolua) lets an attacker chain three flaws - a hardcoded de

CVE-2026-5842 MEDIUM POC
5.5 Apr 09

Remote authorization bypass in decolua 9router up to version 0.3.47 allows unauthenticated network attackers to access t

CVE-2026-62327 CRITICAL
9.3 Jul 13

Unauthenticated API key disclosure in 9Router (npm package '9router' by decolua) through version 0.4.41 lets any remote

CVE-2026-62312 HIGH
8.8 Jul 15

Authenticated remote code execution in 9Router before 0.5.2 lets a logged-in attacker run arbitrary OS commands on the h

CVE-2026-62328 HIGH
8.7 Jul 13

Unauthenticated information disclosure in 9Router (decolua/9router) through version 0.4.41 lets remote attackers read ev

CVE-2026-56679 HIGH
8.7 Jul 15

Authentication bypass in 9Router (AI router & token saver) prior to 0.5.4 lets any authenticated user disable applicatio

CVE-2026-55638 HIGH POC
8.6 Jul 10

Authorization-gate bypass in 9Router (decolua/9router) before 0.5.2 lets a remote unauthenticated attacker reach protect

CVE-2026-63313 HIGH
8.3 Jul 23

Server-side request forgery in 9Router before 0.4.72 lets an authenticated (PR:L) or locally-connected user abuse the /v

CVE-2026-55641 HIGH POC
8.2 Jul 10

Authentication bypass in 9Router (decolua/9router) before 0.5.2 lets a remote unauthenticated attacker forge a 'Host: lo

CVE-2026-56676 HIGH
7.4 Jul 10

Server-side request forgery via DNS rebinding in 9Router (decolua/9router) before 0.5.2 allows an authenticated LLM-prox

Share

CVE-2026-56675 vulnerability details – vuln.today

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