Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to TREK instance
-
DeliverySubmit crafted URL to /api/maps/resolve-url or list-import route
-
ExploitServer validates initial URL via checkSsrf()
-
ExecutionAttacker-controlled host returns HTTP redirect to internal address
-
PersistServer follows redirect via unguarded fetch()
-
ImpactBlind GET request hits loopback or cloud metadata endpoint
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 | Exploitation requires a valid TREK user account. The /api/maps/resolve-url endpoint is reachable by any authenticated user, making it the lower-barrier path. The list-import routes (importGoogleList, importNaverList) additionally require the authenticated user to be a member of a trip, narrowing that attack surface slightly. The attacker must control an external URL that serves an HTTP redirect (3xx) to the internal target - any internet-reachable server or compromised CDN endpoint suffices. Exploitation is further limited by the blind nature of the SSRF: no response body is reflected, so direct secret extraction requires out-of-band interaction (e.g., the internal service initiating an outbound callback). There is no requirement for a non-default configuration; the vulnerability is present in any standard TREK deployment running a version below 3.1.0. |
| Impact | The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) correctly identifies network reachability with no special attack requirements beyond holding a valid user session. The PR:L constraint is a meaningful limiter: an attacker must first authenticate before reaching either the list-import routes (which further require trip membership) or /api/maps/resolve-url (available to all authenticated users). The blind nature of the SSRF - no response body is returned - reduces the practical impact below that of a reflective SSRF; an attacker can probe for open internal ports and trigger unintended GET-based side effects but cannot directly read secrets or database contents. There is no CISA KEV entry and no publicly identified POC, which lowers urgency compared to an unauthenticated or reflective equivalent. Even a modestly sized deployment with low user counts should still prioritize patching, because the /api/maps/resolve-url endpoint is accessible to every authenticated user, widening the potential attacker pool. EPSS data was not provided; the combination of PR:L and blind impact suggests real-world exploitation is plausible but not imminent at scale. No conflicting signals between the CVSS vector and the description were found. |
| Exploit ScenarioDerived | An authenticated TREK user submits a crafted Google Maps or Naver Maps list URL pointing to an attacker-controlled HTTP server. That server responds with a 301 redirect to http://169.254.169.254/latest/meta-data/ (AWS instance metadata) or http://10.0.0.1/ (internal network). TREK's server follows the redirect without re-invoking checkSsrf(), issuing a blind GET to the internal target; although the response is not returned to the attacker, the request can be logged by the internal service or used to infer which internal hosts are reachable. No public exploit code has been identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 20, 2026
Server-Side Request Forgery in TREK, a collaborative travel planner, allows any authenticated user to pivot the server into making blind GET requests against loopback addresses, RFC 1918 internal networks, or cloud instance metadata endpoints (e.g., 169.254.169.254). The root cause is that importGoogleList(), importNaverList(), and resolveGoogleMapsUrl() validate only the initial submitted URL via checkSsrf() but then call native fetch() with redirect:'follow', bypassing DNS-pinned safeFetch() on redirect hops. No public exploit code or CISA KEV entry has been identified at time of analysis; the CVSS 4.0 score of 5.3 reflects the authenticated prerequisite and blind (non-reflective) nature of the SSRF.
RemediationAI
Upgrade TREK to version 3.1.0, which resolves the vulnerability per the vendor-released patch confirmed in commit ad893eb1cc75b6d56f402d73a6d41bd48ba7ae11 (https://github.com/liketrek/TREK/commit/ad893eb1cc75b6d56f402d73a6d41bd48ba7ae11) and pull request #1185 (https://github.com/liketrek/TREK/pull/1185). The fix replaces the unguarded fetch() call with the DNS-pinned safeFetch() path or adds post-redirect URL revalidation through checkSsrf(). If an immediate upgrade is not possible, operators should restrict outbound HTTP from the TREK server process to an allowlist of known external domains at the network or firewall layer, which prevents the redirect from reaching loopback or RFC 1918 space at the network boundary. Additionally, disabling or rate-limiting the /api/maps/resolve-url endpoint reduces the attack surface for non-trip-member authenticated users; note this will break the maps URL resolution feature for end users. Full advisory: https://github.com/liketrek/TREK/security/advisories/GHSA-f5vh-p2h5-x735.
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 (Server-Side Request Forgery) describes the failure to enforce network-level restrictions when a server-side HTTP client follows attacker-influenced URLs. In TREK (CPE: cpe:2.3:a:mauriceboe:trek:*:*:*:*:*:*:*:*), the TypeScript server uses two fetch abstractions: a DNS-pinned safeFetch() path intended for external calls and a plain fetch() with redirect:'follow'. The SSRF guard checkSsrf() in server/src/utils/ssrfGuard.ts validates the user-supplied URL at submission time, but the actual HTTP call uses the unguarded fetch(), meaning any HTTP 3xx redirect issued by an attacker-controlled host to an internal address is honored by the Node.js runtime without revalidation. The affected sinks are importGoogleList() and importNaverList() in server/src/services/placeService.ts, and resolveGoogleMapsUrl() in server/src/services/mapsService.ts. Because only GET semantics are involved and responses are not reflected, this is a blind SSRF - exploitable for internal service probing and cloud-metadata harvesting but not for direct data exfiltration.
Know when Trek 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
Network vector with low privileges (any authenticated user); blind SSRF yields limited confidentiality/integrity impact and no measurable availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
TREK is a collaborative travel planner. Prior to 3.1.0, TREK validates only the initial URL before native redirect following in importGoogleList() and importNaverList() in server/src/services/placeService.ts and resolveGoogleMapsUrl() in server/src/services/mapsService.ts. The affected sinks call checkSsrf() from server/src/utils/ssrfGuard.ts and then use fetch() with redirect: 'follow' instead of the DNS-pinned safeFetch() path, so a public attacker-controlled URL can redirect the server to loopback, RFC 1918, or cloud metadata addresses without revalidation. An authenticated trip member can reach the list-import routes, and any authenticated user can reach /api/maps/resolve-url, allowing blind GET requests to internal services without response-body reflection. This issue is fixed in version 3.1.0.
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.
Server-side request forgery in TREK before 3.3.0 allows an authenticated user (CVSS PR:L) to persist an attacker-control
Authentication bypass in TREK collaborative travel planner (versions prior to 2.7.2) allows authenticated attackers with
TREK, a collaborative travel-planning web application, authorizes the DELETE /api/trips/:tripId/collab/notes/:noteId/fil
Share-link token theft in TREK versions 3.0.0 through 3.0.x allows any ordinary authenticated user to exfiltrate private
Path traversal in the liketrek TREK Public Journey Photo Proxy controller allows remote attackers - without authenticati
Improper authentication in liketrek TREK up to version 3.0.22 allows a remote unauthenticated attacker to bypass the OID
Server-side request forgery in TREK (versions prior to 3.4.0) allows an authenticated user to reach internal services or
Incorrect authorization in liketrek TREK's Journey Photo Proxy (all versions through 3.0.22) enables remote unauthentica
Authentication bypass in liketrek TREK up to v3.0.22 allows a remote attacker with valid credentials to circumvent two-f
TREK, a self-hosted collaborative travel planner, returns complete trip itinerary data - day plans, assignments, notes,
SQL injection in liketrek TREK's Journey Entry Update endpoint allows authenticated remote attackers to manipulate under
Insecure direct object reference in TREK collaborative travel planner before 3.1.3 allows any authenticated user with fi
EUVD-2026-63704
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB