Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with valid API key
-
ExploitSubmit crafted base_url to test endpoint
-
ExecutionServer fetches internal or metadata URL
-
ImpactReturn internal response to attacker
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Credential Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated caller possessing a valid API key (PR:L) who can reach the '/v1/cloud-upload/targets/test' (and '/v1/cloud-upload/targets') route and control the 'base_url' argument; the server then fetches that address and returns the response, enabling SSRF to private, loopback or cloud-metadata ranges (e.g., 169.254.169.254). The key LIMITING factor is deployment mode: the fix shows self-hosted instances where '_pool_is_local()' is true intentionally allow any http(s) internal address (operator's own network), so meaningful exploitation targets SHARED/cloud deployments, where pre-patch code applied no scheme or private-range filtering. No user interaction is needed, but valid credentials and a shared-deployment posture are prerequisites. |
| Impact | This is a genuine but moderate-priority issue, best characterized as a credible-but-not-urgent SSRF. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) and score of 5.3 indicate remote, low-complexity exploitation that nonetheless requires authentication (PR:L) - the source diff confirms this, since the vulnerable '/v1/cloud-upload/targets/test' route fetches the attacker-supplied address only 'for any caller with a key.' Impact is rated Low across confidentiality, integrity and availability (VC:L/VI:L/VA:L), consistent with an SSRF that returns the fetched response to the caller rather than granting code execution. No exploitation-probability signals elevate this: there is no EPSS score in the input, the CVE is not listed in CISA KEV, and no public exploit is identified - the E:X (Exploit Maturity: Not Defined) in the vector reinforces that exploitation status is undetermined. No SSVC decision data was provided. The sole reporting/intelligence source is VulDB; there is no independent corroboration of severity. One nuance worth flagging for defenders: the fix shows exploitability is deployment-dependent - on self-hosted ('_pool_is_local') instances internal fetches are intentionally permitted, so the real risk concentrates on shared/cloud-hosted deployments where private, loopback and cloud-metadata ranges (e.g., 169.254.169.254) were previously reachable. In short, a real and patchable flaw, but one gated by authentication and deployment mode rather than a high-urgency widespread threat. |
| Exploit ScenarioDerived | An attacker holding a valid API key submits a crafted base_url (for example, pointing at the cloud metadata service at 169.254.169.254 or an internal-only host) to the Targets Test Endpoint, which fetches that address server-side and returns the response to the caller, leaking internal data. Because the server trusts the supplied address without validation on shared deployments, the attacker can probe and read internal services reachable from the gateway. No public exploit code is identified at time of analysis, though the fixing PR and advisory describe the mechanism in detail. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 21, 2026
Server-side request forgery in HarnessRouter's 'Targets Test Endpoint' (gateway/app.py) lets an authenticated caller holding a valid API key submit an arbitrary 'base_url' that the server fetches and whose response is returned to the caller, so affected deployments up to 0.31.12 can be induced to reach internal, loopback or cloud-metadata addresses (e.g., 169.254.169.254). The practical exposure is concentrated on shared/cloud deployments, since the vendor's fix deliberately keeps allowing internal http(s) destinations when the instance is self-hosted on the operator's own network. There is no public exploit identified at time of analysis and no CISA KEV listing; the vendor has released v0.31.13 (commit 1c4b1fc1f89737dabd089ac1d1c174a57f764e28) as the fix.
RemediationAI
Vendor-released patch: upgrade to HarnessRouter 0.31.13, which contains commit 1c4b1fc1f89737dabd089ac1d1c174a57f764e28 (PR #429) and applies the '_cloud_base_refused()' validation to both new base_url submissions and previously stored target records. Refer to the advisory GHSA-c5g7-c47h-f6c3 and the release page for upgrade instructions. If immediate upgrade is not possible, restrict the '/v1/cloud-upload/targets' and '/v1/cloud-upload/targets/test' routes to trusted operators at the reverse proxy or ingress (trade-off: any legitimate self-service target-testing workflow breaks), audit and prune stored upload targets with internal or metadata-looking base_url values, and limit/rotate API keys so that only required callers can reach the cloud-upload API. Network-level egress filtering from the gateway to RFC1918 ranges, 127.0.0.0/8, ::1 and 169.254.169.254, or enforcing https-only outbound with an allowlist, will contain the SSRF blast radius (trade-off: self-hosted operators who intentionally push to internal destinations will need explicit allowlist entries, and metadata-service blocking may affect legitimate cloud SDK/IMDSv2 flows).
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw is CWE-918 (Server-Side Request Forgery) in the Python gateway service of HarnessRouter. The '/v1/cloud-upload/targets/test' and '/v1/cloud-upload/targets' routes pass a caller-supplied 'base_url' into the upload/test flow, which fetches that address and returns the remote answer, so without validation the gateway becomes a proxy into whatever network segment it can reach. Pre-fix code applied neither scheme restriction nor private/loopback/metadata range filtering. The patch introduces a helper, '_cloud_base_refused()', which parses the URL (requiring a hostname), and on a shared deployment ('_pool_is_local()' false) enforces https-only plus a '_internal_target()' resolution check that rejects private, local and metadata ranges; on a self-hosted box (pool-is-local true) any http(s) host remains permitted because the network belongs to the operator. The same guard is applied to previously stored target records so pre-existing destinations are skipped rather than called. The supplied vector carries PR:L (authenticated) with AV:N and low confidentiality/integrity/availability impact, consistent with a credentialed SSRF whose leverage depends on network segmentation and deployment mode.
Know when Harnessrouter gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N
Remote and low-complexity but needs a valid API key, so PR:L; the test route returns fetched responses to the caller with limited internal read/interaction impact, so C/I/A:L and scope unchanged.
Primary rating from Vendor (VulDB).
CVSS VectorVendor: VulDB
DescriptionCVE.org
A flaw has been found in HarnessRouter up to 0.31.12. This impacts an unknown function of the file gateway/app.py of the component Targets Test Endpoint. Executing a manipulation of the argument base_url can lead to server-side request forgery. The attack may be performed from remote. Upgrading to version 0.31.13 will fix this issue. This patch is called 1c4b1fc1f89737dabd089ac1d1c174a57f764e28. It is suggested to upgrade the affected component.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.
EUVD-2026-107502
GHSA-m79r-m5x7-m977
NVD
CVE.org
EPSS
VulDB
Exploit-DB