Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to Backstage
-
ExploitCraft proxy URL with ../ or %2e%2e sequences
-
ExecutionProxy forwards beyond configured base path
-
ImpactAccess unintended paths on target server
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation, allowlisting
|
| Exploitation Conditions | Requires an authenticated Backstage session by default (PR:L), and is limited to upstream servers already configured as proxy endpoints in the proxy-backend configuration - a target not configured as a proxy endpoint cannot be reached. The attacker must supply traversal sequences (literal '../' or URL-encoded '%2e%2e') in the request path to a valid proxy route. Limiting factors that reduce realistic risk: authentication is needed unless an endpoint is deliberately set to 'dangerously-allow-unauthenticated', exploitation only redirects within the already-trusted target host, impact is read-oriented path escape rather than full server compromise, and only deployments running @backstage/plugin-proxy-backend before 0.6.17 with configured proxy endpoints are affected. |
| Impact | This is a moderate-severity, authenticated path-traversal/SSRF-style flaw in Backstage's @backstage/plugin-proxy-backend, and the signals point to a real-but-bounded issue rather than an urgent emergency. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N, 6.4 Medium) shows network reachability and low attack complexity but requires at least low privileges (PR:L), which aligns with the description's statement that Backstage authentication is required by default. The scope change (S:C) is well-justified because the proxy forwards the manipulated request to a separate target server, so impact crosses a trust boundary. Exploitation status is low: there is no CISA KEV listing, no public exploit referenced, and no EPSS value supplied, so this should be treated as no public exploit identified at time of analysis. The limiting factors are significant - exploitation only works against target servers already configured as proxy endpoints and requires an authenticated session - which narrows real-world impact to information disclosure of unintended paths on already-trusted upstream targets. Net assessment: prioritize patching where proxy endpoints expose sensitive internal services, but this is not a drop-everything, high-real-risk issue given the authentication requirement and absence of exploitation evidence. |
| Exploit ScenarioDerived | An authenticated Backstage user (any account that can reach the proxy routes) crafts a request to a configured proxy endpoint containing traversal sequences such as '../' or URL-encoded '%2e%2e', causing proxy-backend to forward the request to a path outside the endpoint's configured base path on the upstream target server. This lets the user read or interact with unintended resources on an already-trusted internal target. No public proof-of-concept is referenced, though the fixing commit includes regression tests demonstrating the exact traversal payloads. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 06, 2026
Improper input validation in Backstage's @backstage/plugin-proxy-backend before 0.6.17 allows an authenticated user to craft a request URL containing path traversal sequences that the proxy forwards to a path outside the configured base path on an already-configured upstream target server. The flaw is bounded: the attacker must already hold an authenticated Backstage session (CVSS vector PR:L, unless an endpoint is deliberately configured with 'dangerously-allow-unauthenticated'), and only hosts that are already registered as proxy endpoints can be reached, so the escape is a redirect within an already-trusted target rather than a route to arbitrary internal systems. There is no indication of confirmed active exploitation (not in CISA KEV) and no public exploit code identified at time of analysis; the issue is addressed by vendor-released fixes in @backstage/plugin-proxy-backend 0.6.17 and Backstage release v1.54.6.
RemediationAI
Vendor-released patch: upgrade @backstage/plugin-proxy-backend to 0.6.17 or later, or move to the Backstage release v1.54.6 (https://github.com/backstage/backstage/releases/tag/v1.54.6); the full fix and its accompanying regression tests are visible in commit 233287d0ce3133e41549bf92a7470c940a41753c and the advisory at https://github.com/backstage/backstage/security/advisories/GHSA-9ghw-48h5-v2w5. If an immediate upgrade is not possible, backport or apply the added guard middleware from that commit, which decodes the request path and returns HTTP 400 for any request containing a '..' segment - this is a small, low-risk change but it must be reapplied on every subsequent plugin upgrade and can break legitimate clients that send unusual but harmless path segments. Reduce the attack surface by removing proxy endpoints that are not strictly needed and by never setting 'dangerously-allow-unauthenticated' on an endpoint, since that flag removes the authentication prerequisite and moves the flaw closer to unauthenticated traversal; the trade-off is that affected integrations will stop working. As a complementary control, constrain the proxy targets' network egress and the upstream servers' authorization so that reaching a path outside the configured base path yields nothing sensitive, and monitor proxy-backend logs for HTTP 400s or for paths containing '%2e%2e' or '../' as an exploitation signal; egress restriction is effective but can silently break unrelated Backstage features that share the same outbound network path.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 3 packages in npm, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The affected component is the Backstage developer-portal proxy backend plugin (@backstage/plugin-proxy-backend), which is built on the Express-style routing stack and mounts configurable '/api/proxy/<endpoint>' routes that forward incoming requests to operator-defined target servers. Root cause falls under CWE-20 (Improper Input Validation): the router consumed the raw request URL and passed the path portion through to the upstream target without first decoding and normalizing it, so traversal segments such as literal '../' or their percent-encoded equivalent '%2e%2e' survived into the forwarded request line. The upstream fix (commit 233287d0ce3133e41549bf92a7470c940a41753c) inserts a guard middleware ahead of the proxy handlers that decodes req.url up to the query string, normalizes backslashes to forward slashes, splits the path into segments and rejects any request whose segments include '..' with HTTP 400 - the accompanying test asserts 400 for both '/api/proxy/test/../../other' and '/api/proxy/test/%2e%2e/other'. Because the middleware operates on the decoded path, it also closes the encoded-traversal variant, and malformed encodings fall through to the same rejection path. CPE data maps the exposure to backstage:backstage and @backstage:plugin-proxy-backend before the fixed version, confirming the affected surface is the plugin rather than the core portal framework. The severity assessment (S:C with C:L/I:L/A:N) reflects that the validation gap can redirect a proxied request outside its intended base path - a limited confidentiality/integrity effect scoped to upstreams the operator has already chosen to trust - rather than code execution or full server compromise.
Know when Backstage 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
AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
Network-reachable with low complexity but needs an authenticated user (PR:L); scope changes (S:C) because the request escapes to a separate target server, yielding limited confidentiality and integrity impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Backstage is an open framework for building developer portals. Prior to 0.6.17, the @backstage/plugin-proxy-backend package is affected by improper input validation in proxy-backend. An authenticated Backstage user could craft a request URL that causes the proxy-backend to forward the request to a path outside the configured base path on the target server. This is limited to target servers already configured as proxy endpoints and requires Backstage authentication by default. This issue is fixed in version 0.6.17.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
The Bitbucket pull-request Scaffolder actions in Backstage can be abused by an authenticated user with template-executio
Backstage is an open platform for building developer portals. Rated critical severity (CVSS 9.9), this vulnerability is
Authenticated Backstage users can retrieve the internal execution data of other users' Scaffolder tasks - notably the Se
Authenticated users who can register or modify a TechDocs documentation source can achieve code execution inside the Bac
Authenticated remote code execution in the @backstage/plugin-techdocs-node package shipped with the Backstage developer
Arbitrary code execution in Backstage TechDocs documentation builds allows an authenticated user with write access to a
Arbitrary Python code execution in Backstage's @backstage/plugin-techdocs-node (versions < 1.13.11 and = 1.14.0) lets a
Improper task-state validation in the @backstage/plugin-scaffolder-backend plugin (Backstage versions prior to 3.3.1, 3.
Arbitrary code execution on the TechDocs backend host is achievable through a sanitizer bypass in the @backstage/plugin-
Improper input validation in the @backstage/plugin-scaffolder-backend-module-sentry scaffolder actions (Backstage 0.3.0
@backstage/plugin-scaffolder-backend is the backend for the default Backstage software templates. Rated high severity (C
Authenticated users of Backstage Scaffolder can bypass administrator-configured action restrictions in @backstage/plugin
EUVD-2026-94010
GHSA-9ghw-48h5-v2w5
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB