HIGH 8.2

CVE-2026-55641: 9Router Authentication Bypass and SSRF Vulnerability

9Router, an AI router designed to optimize and reduce costs for large language model requests, contains a critical authentication bypass vulnerability in versions before 0.5.2. The vulnerability stems from the application trusting the HTTP Host header—a value supplied by the client—to determine whether a request originates locally. An attacker can spoof this header by claiming to be localhost, bypassing API key authentication entirely. Once authenticated bypass is achieved, attackers gain access to the LLM proxy and can make requests using the router's stored provider credentials, potentially consuming API quota or accessing sensitive upstream services. Additionally, the searxng search provider feature can be exploited to make the server perform requests to internal infrastructure or cloud metadata endpoints, enabling information disclosure or further lateral movement.

Source data · NVD / CISA · public domain

CVSS
3.1 · 8.2 HIGH · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N
Weaknesses (CWE)
CWE-1327, CWE-290, CWE-348, CWE-918
Affected products
0 configuration(s)
Published / Modified
2026-07-10 / 2026-07-10

NVD description (verbatim)

9Router is an AI router & token saver. Prior to 0.5.2, 9router determines whether a /v1 LLM proxy request is local by reading the client-controlled Host header, allowing a remote unauthenticated attacker to send Host: localhost and bypass API-key authentication. In the default configuration, this exposes the /v1 proxy to upstream provider calls using stored provider credentials and allows /v1/search with the searxng provider_options.baseUrl parameter to drive server-side requests to internal or cloud-metadata hosts. This issue is fixed in version 0.5.2.

4 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

The vulnerability exists in 9Router's request routing logic for /v1 LLM proxy endpoints. The application implements a localization check by reading the Host HTTP header to distinguish between local and remote clients, using this determination as part of its authentication enforcement. Because HTTP headers are client-controlled, a remote attacker can set Host: localhost in a request, fooling the application into treating the request as local and skipping API key validation. This design flaw is compounded by two dangerous default behaviors: (1) the proxy forwards requests to upstream LLM providers using pre-configured credentials stored in the router, and (2) the /v1/search endpoint with searxng provider support accepts a baseUrl parameter that is not properly validated, allowing attackers to redirect server-side requests (SSRF) to arbitrary hosts including internal IP ranges or cloud metadata services (e.g., 169.254.169.254). The CWE classifications (CWE-1327: trust in the Client-Supplied HTTP Header, CWE-290: Improper Authentication, CWE-348: Use of Less Trusted Sources, CWE-918: Server-Side Request Forgery) accurately capture these flaws.

Business impact

Organizations deploying 9Router in their infrastructure to manage or optimize LLM API costs face immediate financial and confidentiality risks. An unauthenticated attacker can bypass all authentication controls and use the router's stored provider credentials to issue unlimited requests to upstream LLM services—AWS Bedrock, OpenAI, Anthropic, Google Vertex AI, or others—resulting in unexpected charges and API quota exhaustion. The SSRF capability via the searxng provider enables attackers to probe and exfiltrate data from internal services (databases, admin panels, Kubernetes APIs) or cloud metadata endpoints, potentially leading to credential theft and further compromise of the hosting environment. If 9Router is used in a multi-tenant or shared environment, this vulnerability breaks tenant isolation. For organizations relying on 9Router to audit or control LLM usage, the bypass renders their observability and cost controls ineffective.

Affected systems

9Router versions prior to 0.5.2 are vulnerable. The default configuration of 9Router is affected; organizations may have reduced attack surface if they have manually disabled the /v1 proxy endpoint or the searxng provider, but such configurations are likely uncommon. Any deployment accessible from a network where an attacker can send HTTP requests—including cloud deployments, on-premises networks with poor segmentation, or internet-facing instances—is at risk. The vulnerability requires network access to the 9Router instance but does not require authentication, making it exploitable by any network-adjacent attacker.

Exploitability

This vulnerability is straightforward to exploit and requires minimal sophistication. An attacker needs only to craft an HTTP request to the 9Router /v1 endpoint with a spoofed Host: localhost header and no authentication credentials. Standard tools like curl, Python requests, or any HTTP client are sufficient. The CVSS score of 8.2 (High) reflects the ease of exploitation (network-accessible, no authentication or user interaction required) combined with the severity of impact (confidentiality breach via credential misuse and SSRF, with some integrity impact via unauthorized API calls). The vulnerability is not present in current threat intelligence feeds (KEV status: false), but given its simplicity and the sensitive nature of LLM proxies, weaponization is likely. Organizations should assume active exploitation is or will be occurring.

Remediation

Upgrade 9Router to version 0.5.2 or later immediately. Version 0.5.2 addresses the vulnerability by implementing proper request origin validation that does not rely solely on client-supplied headers. After upgrading, verify that authentication is enforced on all /v1 proxy endpoints and validate that the searxng provider (if used) restricts baseUrl to an allowlist of approved services. As an interim mitigation for organizations unable to patch immediately, implement network-level access controls: restrict access to 9Router instances to trusted clients only, use a reverse proxy to inject a trusted X-Forwarded-For or X-Real-IP header and validate it server-side, or disable the /v1 proxy and searxng provider if not actively used. However, these mitigations are not substitutes for patching.

Patch guidance

Apply version 0.5.2 or later to all 9Router instances. Verify the patch by confirming the version in the application's status endpoint or logs. Test that API key authentication is now enforced; requests with a spoofed Host header and no API key should be rejected. If 9Router is deployed in a Kubernetes environment, update the container image and restart pods. If deployed as a standalone service, stop the current version, update to 0.5.2, and restart. Monitor for any configuration drift that may have weakened security controls during or after the upgrade. Confirm that stored provider credentials remain encrypted and that no credentials were exposed during the vulnerability window.

Detection guidance

Monitor 9Router access logs for requests to /v1 endpoints with a Host header of localhost or 127.0.0.1 that originate from non-localhost IP addresses. Requests with missing or invalid API key headers combined with these spoofed Host headers are strong indicators of exploitation. Monitor for suspicious /v1/search requests with searxng provider and baseUrl parameters pointing to internal IP ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) or cloud metadata endpoints (169.254.169.254, etc.). Correlate authentication logs: successful /v1 requests with no authentication credentials should be treated as incidents. Set alerts for any upstream LLM provider API calls that cannot be attributed to legitimate users or jobs. If available, enable request logging at your reverse proxy or load balancer layer to capture Host headers before they reach 9Router, providing defense-in-depth visibility.

Why prioritize this

This vulnerability should be prioritized as Critical for any organization running vulnerable 9Router instances in production. The combination of unauthenticated remote access, no user interaction required, and immediate access to stored credentials and SSRF capabilities justifies the CVSS 8.2 High score and demands urgent remediation. Unlike vulnerabilities requiring user interaction or advanced attack chains, this flaw can be exploited in seconds by any network-adjacent attacker. The financial impact (unauthorized LLM API usage) and confidentiality risk (credential theft, internal service reconnaissance) make this a clear and present danger to operations and budget.

Risk score, explained

The CVSS 3.1 score of 8.2 reflects Attack Vector: Network (the service is remotely reachable), Attack Complexity: Low (no special conditions required), Privileges Required: None (no authentication), User Interaction: None (the attack is fully automated), with impacts to Confidentiality (High—credentials and internal data exposed), Integrity (Low—unauthorized API calls but not data manipulation), and Availability (None—the service itself is not disrupted, though API quotas may be exhausted). The High severity designation appropriately signals that this is a serious flaw requiring immediate attention but does not escalate to Critical because the vulnerability does not directly compromise the confidentiality of end-user data stored in 9Router itself (the primary impact is credential and infrastructure misuse).

Frequently asked questions

Can I safely ignore this vulnerability if my 9Router instance is behind a corporate firewall?

No. While network segmentation reduces attack surface, it does not eliminate the risk. Insider threats, compromised internal systems, or lateral movement by an attacker already inside your network can exploit this vulnerability. Additionally, if your 9Router instance is accessible from the internet, even indirectly through a VPN or cloud deployment, it is exploitable. Patch immediately regardless of network location.

What if I don't use the searxng provider or the /v1 proxy?

The authentication bypass via the Host header is still present, and if you enable either feature in the future, you inherit the risk. Even if you do not use searxng, any upstream LLM provider credentials stored in 9Router can be abused if the /v1 proxy is accessible. The safest approach is to patch to 0.5.2, which closes the authentication bypass entirely.

How can I tell if my 9Router instance has been exploited?

Check access logs for requests to /v1 endpoints from non-localhost IPs with Host: localhost headers. Audit your upstream LLM provider billing and usage reports for unexpected API calls or quota spikes during the timeframe when your instance was running a vulnerable version. Review your cloud metadata endpoint or internal service logs for requests originating from your 9Router instance IP address. If you are running version 0.5.1 or earlier, assume exploitation is possible and investigate immediately.

Is there a workaround that doesn't involve upgrading?

Temporary workarounds include: (1) restricting network access to 9Router via firewall rules to only trusted IPs, (2) placing 9Router behind a reverse proxy that validates the Host header server-side and rejects spoofed values, or (3) disabling the /v1 proxy and searxng provider if not in use. None of these are substitutes for patching; they are stopgap measures only. Upgrade to 0.5.2 as soon as possible.

This analysis is provided for informational purposes to help security professionals understand and remediate CVE-2026-55641. The details are accurate as of the published date (2026-07-10) based on the available vulnerability data. Organizations should verify the applicability of this guidance to their specific deployments and consult official 9Router documentation and vendor advisories for authoritative information. No warranty is provided regarding the completeness or ongoing accuracy of this analysis. If you are a vendor or maintainer of 9Router and have corrections or updates, please contact SEC.co. This information should not be construed as legal advice or a guarantee of security; it is one input to a comprehensive risk management program. Source: NVD (public-domain), retrieved 2026-08-17. Analysis generated by SEC.co (claude-haiku-4-5).