CVE-2026-63313 - Server-Side Request Forgery in 9Router
9Router versions prior to 0.4.72 contain a server-side request forgery (SSRF) vulnerability in the /v1/web/fetch endpoint, allowing an authenticated or locally-connected user to bypass URL validation to fetch arbitrary internal URLs, potentially exposing cloud metadata credentials, accessing internal services, and bypassing authentication on localhost endpoints.
A critical server-side request forgery (SSRF) vulnerability, identified as CVE-2026-63313, affects 9Router software versions prior to 0.4.72. The vulnerability resides within the /v1/web/fetch endpoint, which is designed to accept a user-controlled URL parameter for content scraping via external providers like Firecrawl, Jina Reader, Tavily, or Exa. The core issue stems from insufficient URL validation, as the system only checks for syntactic validity using new URL() without implementing a blocklist for private IP ranges, cloud metadata endpoints (e.g., 169.254.169.254), link-local addresses, or internal hostnames. This flaw enables an authenticated or locally-connected attacker to force the 9Router server to make requests to arbitrary internal URLs, facilitating read-access SSRF. This can lead to the exposure of sensitive cloud metadata credentials, unauthorized access to internal network services, and the bypassing of authentication mechanisms on localhost endpoints. The vulnerability has a CVSS v3.1 Base Score of 7.7.
Attack Chain
- An authenticated or locally-connected attacker crafts a malicious URL payload targeting an internal resource (e.g.,
http://169.254.169.254/latest/meta-data/iam/security-credentials/). - The attacker sends an HTTP POST request to the 9Router
/v1/web/fetchendpoint, including the malicious URL within theurlparameter. - The 9Router server receives the request and performs a basic syntactic validation of the provided URL using
new URL(). - Due to the lack of a blocklist for internal IP ranges, the 9Router server initiates a request to the attacker-specified internal URL via one of its configured external scraping providers (e.g., Firecrawl).
- The external scraping provider (or the 9Router server itself in some configurations) fetches the content from the internal target (e.g., cloud metadata service or an internal API endpoint).
- The sensitive response content (e.g., temporary AWS credentials, internal configuration data, session tokens) is returned to the 9Router server.
- The 9Router server then returns the fetched content to the attacker in its response, completing the SSRF exploitation and exfiltrating internal data.
Impact
Successful exploitation of CVE-2026-63313 grants attackers read-access to internal network resources, leading to severe consequences. The primary impacts include the potential exposure of cloud metadata credentials, which can be leveraged for further unauthorized access within cloud environments. Attackers can also gain unauthorized access to internal services and bypass authentication mechanisms on localhost endpoints, potentially leading to privilege escalation or lateral movement within the compromised network. This read-access SSRF capability allows for extensive information gathering and reconnaissance, laying the groundwork for more sophisticated attacks against the affected organization.
Recommendation
- Patch CVE-2026-63313 immediately by updating 9Router to version 0.4.72 or later on all deployed instances.
- Deploy the Sigma rule "Detects CVE-2026-63313 Exploitation - 9Router SSRF via Internal IPs" to your SIEM and investigate any alerts on POST requests to
/v1/web/fetchwith internal IP addresses or cloud metadata URLs in the query parameters. - Ensure webserver logs (category: webserver) for all internet-facing 9Router instances are collected and ingested into your SIEM for analysis by the provided Sigma rule.
Detection coverage 1
Detects CVE-2026-63313 Exploitation - 9Router SSRF via Internal IPs
highDetects CVE-2026-63313 exploitation attempts against 9Router via HTTP POST requests to /v1/web/fetch containing internal IP addresses or cloud metadata endpoints in the 'url' query parameter.
Detection queries are available on the platform. Get full rules →