CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-56677

CVE-2026-56677: Unauthenticated Server-Side Request Forgery in 9Router OIDC Test Endpoint

Amit Schendel
Amit Schendel
Senior Security Researcher

Aug 18, 2026·5 min read·14 visits

Executive Summary (TL;DR)

Unauthenticated network attackers can exploit a testing endpoint in 9Router (<= 0.5.4) to execute Server-Side Request Forgery (SSRF), gaining unauthorized access to internal services and cloud instance metadata.

A high-severity security vulnerability exists in 9Router, an AI router and token saver dashboard. When dashboard authentication features are disabled or left in default configurations, the application exposes administrative testing routines directly to the public internet. Unauthenticated network adversaries can exploit the OIDC configuration validation endpoint to initiate arbitrary HTTP requests, routing unauthorized traffic to local loops, adjacent container ports, and cloud resource metadata interfaces.

Vulnerability Overview

9Router is a specialized dashboard and router mechanism designed to aggregate AI models and optimize API token usage. To facilitate user federation, the platform integrates OpenID Connect (OICC) client authentication mechanisms.\n\nWhen the dashboard is configured without explicit API key requirements, several testing routes become exposed to unauthenticated external actors. Specifically, the route located at /api/auth/oidc/test can be accessed by issuing direct POST requests over the internet.\n\nBecause this endpoint accepts a user-defined URL parameter to validate identity configurations, the absence of network-level and application-level verification creates a severe Server-Side Request Forgery (SSRF) vector. This exposure allows unauthorized entities to leverage the dashboard server as a proxy to execute arbitrary scan actions and query private hosting infrastructure.

Root Cause Analysis

The root cause of this vulnerability lies in the programmatic implementation of the OIDC configuration testing feature across two main files: src/app/api/auth/oidc/test/route.js and src/lib/auth/oidc.js.\n\nDuring execution, the handler at the test endpoint extracts the client-supplied issuerUrl parameter from the HTTP request body. It passes this value directly to the helper function fetchOidcDiscovery() without performing basic hostname validation or protocol filtering.\n\nThe fetchOidcDiscovery() function appends standard OIDC discovery path elements and triggers an outbound network call using the native fetch() interface. Crucially, the system does not resolve the hostname to verify if it maps to restricted subnets before opening the TCP socket.\n\nAs a result of this omission, the server is permitted to communicate with loopback interfaces (e.g., 127.0.0.1), private RFC 1918 subnets (such as 10.0.0.0/8), and link-local addresses. The application then returns parsed configuration metrics directly back to the initiator, serving as a functional network oracle.

Code-Level Analysis

The following code illustrates the vulnerable implementation within the OIDC helper utility where the input URL is retrieved and queried directly without isolation:\n\njavascript\n// Vulnerable logic pattern in src/lib/auth/oidc.js\nexport async function fetchOidcDiscovery(issuerUrl) {\n // The input parameter is trusted blindly and string-manipulated\n const discoveryUrl = `${issuerUrl.replace(/\\/+$/, '')}/.well-known/openid-configuration`;\n \n // Outbound fetch is performed directly to the user-supplied endpoint\n const response = await fetch(discoveryUrl);\n return await response.json();\n}\n\n\nTo properly eliminate this vector, developers must perform active DNS resolution and inspect the destination IP structure before executing the HTTP connection block:\n\njavascript\n// Secure implementation involving DNS resolution and CIDR check\nimport dns from 'dns/promises';\nimport { isPrivateIp } from 'ip-address-validator'; // Conceptual secure validation helper\n\nexport async function secureFetchOidcDiscovery(issuerUrl) {\n const parsedUrl = new URL(issuerUrl);\n \n if (parsedUrl.protocol !== 'https:') {\n throw new Error('Only HTTPS connections are accepted');\n }\n \n // Perform standard DNS resolution\n const lookupResult = await dns.lookup(parsedUrl.hostname);\n const resolvedIp = lookupResult.address;\n \n // Prevent interaction with loopback, RFC 1918, or cloud link-local spaces\n if (isPrivateIp(resolvedIp)) {\n throw new Error('Access to specified IP address space is prohibited');\n }\n \n // Construct the query targeting the validated IP directly to prevent DNS rebinding\n const endpointUrl = `https://${resolvedIp}${parsedUrl.pathname}/.well-known/openid-configuration`;\n \n const response = await fetch(endpointUrl, {\n headers: { 'Host': parsedUrl.hostname }\n });\n return await response.json();\n}\n

Exploitation and Attack Vectors

An unauthenticated remote attacker can exploit this SSRF vulnerability to discover local services or scrape sensitive environment credentials.\n\nmermaid\ngraph LR\n "Attacker" -- "POST /api/auth/oidc/test" --> "9Router Server"\n "9Router Server" -- "Unvalidated fetch()" --> "Internal Target"\n "Internal Target" -- "Data / Error" --> "9Router Server"\n "9Router Server" -- "Reflected Response" --> "Attacker"\n\n\nIn a scenario where the application runs inside an AWS or similar cloud instance, an attacker can construct a payload to query the Instance Metadata Service (IMDSv1) at 169.254.169.254 to extract temporary IAM credentials:\n\nhttp\nPOST /api/auth/oidc/test HTTP/1.1\nHost: victim-9router.internal\nContent-Type: application/json\n\n{\n "issuerUrl": "http://169.254.169.254/latest/meta-data/"\n}\n\n\nAdditionally, an attacker can probe local loopback ports to verify active database microservices, LLM inference endpoints (like Ollama on 11434), or admin control panels that are bound only to the local interface.

Impact Assessment

The potential consequences of CVE-2026-56677 are significant. The CVSS score of 8.6 reflects low confidentiality impact, but high integrity and low availability impacts because arbitrary state-changing requests can be tunneled via the SSRF vector to internal systems.\n\nIn containerized and Kubernetes environments, the container housing 9Router likely shares a virtual network namespace with other key services. Attackers can leverage the SSRF capability to pivot across internal clusters, reaching internal datastores that do not mandate authentication for local connections.\n\nFinally, if the underlying cloud deployment relies on legacy IMDSv1 structures, the leak of the cloud service role token can lead to a full compromise of the cloud resources associated with the dashboard infrastructure.

Remediation and Defensive Strategy

Mitigating the vulnerability requires a multi-layered defensive posture involving application changes, configuration updates, and network restrictions.\n\nImmediate operational mitigation is achieved by ensuring authentication rules are active. Administrators must access the dashboard interface, navigate to the 'Endpoint & Key' configurations, and toggle 'Require API key' to 'ON' to prevent unauthenticated interactions.\n\nFor structural defense, deployment teams should configure firewall egress rules to restrict the web container from making outbound requests to localhost addresses or RFC 1918 space, unless explicitly whitelisted for OIDC federation servers.

Technical Appendix

CVSS Score
8.6/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L

Affected Systems

9Router AI dashboard platforms running version 0.5.4 or earlier

Affected Versions Detail

Product
Affected Versions
Fixed Version
9router
decolua
<= 0.5.4Verify config changes (Require API key ON)
AttributeDetail
CWE IDCWE-918, CWE-306
Attack VectorNetwork (AV:N)
CVSS8.6 (High)
EPSS ScoreN/A
ImpactHigh Integrity, Low Confidentiality, Low Availability
Exploit StatusProof of Concept (PoC) available
KEV StatusNot listed

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1005Data from Local System
Collection
CWE-918
Server-Side Request Forgery (SSRF)

The application receives a user-defined URL and makes an outbound request to that destination without resolving and inspecting the resolved IP address, enabling arbitrary requests to internal network locations.

References & Sources

  • [1]GitHub Security Advisory GHSA-8g4w-4ffg-8vgx
  • [2]CVE-2026-56677 Record
  • [3]9Router GitHub Page Repository

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•1 day ago•CVE-2026-11748
6.9

CVE-2026-11748: Unauthenticated LDAP Injection in Central Dogma Server Authentication

An LDAP injection vulnerability exists in the centraldogma-server-auth-shiro module of LY Corporation Central Dogma before version 0.84.0. The search logic dynamically constructs LDAP search filters by interpolating user-provided usernames without escaping RFC 4515 metacharacters. Unauthenticated remote attackers can leverage this flaw to bypass authentication, enumerate directory hierarchies, and access unauthorized resources.

Alon Barad
Alon Barad
9 views•6 min read
•1 day ago•CVE-2026-11746
9.4

CVE-2026-11746: Use of Hard-coded ZooKeeper Replication Secret 'ch4n63m3' in Central Dogma Server

CVE-2026-11746 is a critical vulnerability in Central Dogma Server prior to version 0.84.0, where an embedded ZooKeeper replication secret silently falls back to a publicly known, hard-coded default string ('ch4n63m3'). Remote attackers with access to the replication network can authenticate as legitimate cluster peers, potentially leading to unauthorized data exposure, state manipulation, or complete cluster takeover.

Amit Schendel
Amit Schendel
7 views•6 min read
•1 day ago•CVE-2026-56665
4.2

CVE-2026-56665: Logical Validation Bypass in ZITADEL External JWT Identity Provider

A logical verification flaw in ZITADEL's external JWT Identity Provider validation allows attackers to bypass session expiration checks. If an incoming JWT lacks the 'exp' claim, the system skips validation entirely, creating an indefinitely valid session. This issue has been addressed in versions 3.4.12 and 4.15.2.

Alon Barad
Alon Barad
7 views•7 min read
•1 day ago•CVE-2026-59149
6.5

CVE-2026-59149: Sibling Directory Path Traversal in Mockoon Backend Server

CVE-2026-59149 identifies a directory traversal vulnerability in `@mockoon/commons-server`, the backend mock-server library powering the Mockoon application. The flaw occurs in the path containment validation logic used during raw file response generation. An unauthenticated attacker can exploit this weakness to retrieve arbitrary files from sibling directories sharing a common prefix with the designated static base directory.

Amit Schendel
Amit Schendel
9 views•5 min read
•1 day ago•CVE-2026-59148
8.8

CVE-2026-59148: Unauthenticated Administrative API and CORS Misconfiguration in Mockoon

An in-depth analysis of CVE-2026-59148, a high-severity flaw in Mockoon where unauthenticated administrative endpoints and a wildcard Cross-Origin Resource Sharing (CORS) policy allow remote execution, state poisoning, and credential theft.

Alon Barad
Alon Barad
11 views•6 min read
•1 day ago•CVE-2026-56666
4.8

CVE-2026-56666: Account Takeover via Improper Email Verification in ZITADEL Federated Identity Handler

An improper authentication vulnerability (CWE-287) in ZITADEL's external identity provider handler before version 4.15.3 allows remote attackers to perform complete account takeover. When auto-linking by email is enabled, ZITADEL verifies that the local target account has a verified email address but fails to verify if the external provider confirmed ownership of that same email. Attackers can exploit this by registering an unverified account with a victim's email address on a permissive external provider, leading to unauthorized account binding and persistent access.

Amit Schendel
Amit Schendel
7 views•7 min read