Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege member
-
ExploitSubmit internal URL to property import endpoint
-
ExecutionServer performs unrestricted requests.get (SSRF)
-
ImpactHarvest internal/metadata response via echoed output
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 session on Client St0r - pre-patch, any logged-in member including a read-only account - reaching the POST /locations/<id>/import-property-from-url/ endpoint backed by _fetch_html in the Property URL Importer. The attacker supplies a URL that the server fetches with a plain requests.get() whose only validation was an http:// or https:// prefix; redirects and proxy environment variables were honoured, allowing requests to 127.0.0.1, RFC1918 ranges, 169.254.169.254 and other routable internal hosts, with failure exception text echoed back. Exploitation is LIMITED by the need for valid account credentials (no anonymous access) and by the importer feature being present (shipped since v2.11.4); it does not require any special non-default configuration. |
| Impact | This is a genuine but moderate-severity SSRF (CWE-918) rather than a top-tier emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N) scores 5.3 (Medium): network-reachable, low attack complexity, but it requires authentication (PR:L) and yields only low confidentiality impact with no integrity or availability impact. The source-code evidence confirms the real-world risk profile: any logged-in member - including a read-only one, pre-patch - could coerce the server into requesting 127.0.0.1, RFC1918 hosts, or the 169.254.169.254 cloud metadata endpoint, and exception text was echoed back, enabling limited blind/semi-blind internal reconnaissance and potential metadata/credential theft in cloud deployments. On exploitation signals the picture is consistent: the CVSS 4.0 string carries E:P (Proof-of-Concept) and the description states 'the exploit has been made public,' so publicly available exploit code exists. However, there is NO CISA KEV listing and NO EPSS score in the provided data, so there is no evidence of active, widespread exploitation. The dominant risk-reducing factor is prevalence: this is an obscure, single-maintainer GitHub project with negligible enterprise footprint. Net: real and patchable, but a low operational priority for most organizations unless they actually run this product. |
| Exploit ScenarioDerived | An attacker with any valid low-privilege account (pre-patch, even a read-only member) submits a crafted URL such as http://169.254.169.254/latest/meta-data/ to the Property URL Importer endpoint. The server-side _fetch_html function performs a plain requests.get() that follows redirects and ignores IP-range restrictions, so it fetches the internal/metadata resource and leaks response or exception details back to the attacker. Public exploit code exists, and the low attack complexity makes this trivially reproducible against any exposed instance. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 19, 2026
Server-side request forgery in Client St0r through 3.17.586 lets any logged-in user - including read-only accounts - force the server to fetch arbitrary internal URLs through the Property URL Importer endpoint (POST /locations/<id>/import-property-from-url/). Because the pre-patch code only checked for an http:// or https:// prefix and used a plain requests.get() that followed redirects and honoured proxy environment variables, attackers could reach 127.0.0.1, RFC1918 hosts, and the 169.254.169.254 metadata endpoint, with failure exception text echoed back to the requester. Exploit code is publicly available, but no confirmed active exploitation (CISA KEV) is reported; upgrading to 3.17.587 resolves the issue.
RemediationAI
Vendor-released patch: upgrade to Client St0r 3.17.587 (commit 7e75c6cc6a07621c10be9b07fafd99e89a02e327), available from https://github.com/agit8or1/clientst0r/releases/tag/v3.17.587. The release ships core/safe_http.py, which enforces scheme/port/hostname and literal-IP validation on the original URL and every redirect target, resolves hostnames once and connects to the validated IP to block DNS rebinding, re-checks the connected peer, ignores proxies and .netrc, and applies 5s connect / 10s read / 25s total timeouts with a 2 MB body cap and HTML/text-only content types; the importer endpoint additionally now requires write access (@require_write) and returns generic error messages. If upgrading immediately is not possible, compensating controls with trade-offs: restrict the importer endpoint at the reverse proxy to trusted roles or IP ranges, accepting that the legitimate import feature becomes unavailable to normal members; block outbound traffic from the application server to RFC1918, loopback and 169.254.0.0/16 at the network egress layer, noting this may break other internal integrations the instance relies on; and unset proxy environment variables and enforce a locked-down HTTP proxy that rejects internal destinations, though this is weaker than the in-code socket-level check. Note the ALLOW_PRIVATE_IP_INTEGRATIONS setting deliberately does NOT apply to this code path, so it cannot be used as a workaround.
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
CWE-918 (SSRF) in a Django-style Python application. The vulnerable function _fetch_html in locations/services/property_url_importer.py accepted a user-supplied URL and fetched it server-side with requests.get(), validating only that the string began with http:// or https://. Default requests behaviour - automatic redirect following, proxy environment variable support, ~/.netrc usage - meant the server could be steered at loopback, RFC1918 space, link-local 169.254.169.254 (cloud metadata), or any host the server could route to; exception text from failed fetches was returned to the client, aiding reconnaissance. The fix introduces core/safe_http.py with two independent layers: textual validation (scheme, no embedded credentials, ports 80/443, hostname blocklist/suffix rules, and literal internal IP detection across dotted, decimal, hex, octal, shortened, IPv6, IPv4-mapped, NAT64 and zone-id spellings) plus an authoritative urllib3 connection-level guard that resolves once, refuses if any resolved address is non-public, pins the connection to the validated IP literal to prevent DNS rebinding, and re-checks the connected peer. Redirects are followed manually (max 3) with revalidation, proxies and .netrc are ignored, and timeouts, a 25s deadline, a 2 MB body cap and HTML/text-only content types are enforced. The endpoint also gained a write-access requirement. The feature had been present since v2.11.4, so all releases from that point through 3.17.586 are affected.
Know when Clientst0R 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:N/VA:N/SC:N/SI:N/SA:N/E:P
Network-reachable with low complexity, but a valid low-privilege member account is required (PR:L); impact is limited internal information disclosure (C:L) with no integrity or availability effect.
Primary rating from Vendor (VulDB).
CVSS VectorVendor: VulDB
Lifecycle Timeline
2DescriptionCVE.org
A vulnerability was found in agit8or1 clientst0r up to 3.17.586. Affected by this vulnerability is the function _fetch_html of the file locations/services/property_url_importer.py of the component Property URL Importer. The manipulation of the argument url results in server-side request forgery. The attack may be launched remotely. The exploit has been made public and could be used. Upgrading to version 3.17.587 addresses this issue. The patch is identified as 7e75c6cc6a07621c10be9b07fafd99e89a02e327. The affected component should be upgraded. The vendor was contacted early, responded in a very professional manner and quickly released a fixed version of the affected product.
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-104590
GHSA-8q52-22p3-3mxf
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB