Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to catalog backend
-
ExploitRegister Location entity inheriting disallowed file type
-
ExecutionBypass allowedLocationTypes enforcement during processing
-
ImpactTrigger unintended backend host file access
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the catalog backend to be configured with an allowedLocationTypes restriction list AND an attacker with authenticated permission to register or influence a Location entity. The specific flaw: the pre-patch orchestrator only enforced the allowed-type check when the processed location type differed from the parent location's type (type !== context.location.type), so a disallowed type (e.g. 'file') that was inherited from the parent/origin location bypassed enforcement and was processed, enabling file access on the backend host. Limiting factors: non-default configuration (allowedLocationTypes must be set), authenticated access (PR:L), and high complexity (AC:H) due to the inheritance-matching edge case; default deployments without allowedLocationTypes restrictions, or without untrusted location-registration access, are not meaningfully exposed. |
| Impact | This is a genuinely low-priority issue despite the network attack vector. The CNA (GitHub) CVSS:3.1 vector (AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N) scores only 3.1 (Low), and the signals are consistent with that: exploitation requires authenticated access (PR:L), carries high attack complexity (AC:H) because it depends on a non-default allowedLocationTypes configuration plus a specific type-inheritance edge case, and yields only limited impact. No EPSS score, CISA KEV listing, or public POC is present in the provided data - no public exploit identified at time of analysis - so there is no evidence of real-world exploitation pressure. One conflict worth flagging: the description states the flaw leads to 'unintended file access on the backend host,' which reads like a confidentiality (file read) impact, yet the vendor vector sets C:N and instead assigns I:L - verify with the vendor advisory whether the realistic impact is reading backend files (confidentiality) or catalog data integrity. Overall this is a legitimately low-severity hardening fix, not an urgent priority. |
| Exploit ScenarioDerived | An authenticated user able to register catalog locations submits a Location entity whose type (e.g. 'file:') is normally excluded by the configured allowedLocationTypes list, but is crafted so the type is inherited from the parent/origin location and therefore skips the enforcement check. The catalog backend then processes the location and reads an unintended file from the backend host filesystem. No public exploit is identified; attack complexity is high and a non-default allowedLocationTypes configuration is required. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 06, 2026
Backstage's catalog backend (the @backstage/plugin-catalog-backend package) prior to 3.9.1 enforces its allowedLocationTypes restriction inconsistently, letting a disallowed location type be processed when it is inherited from the parent/origin location rather than declared directly. An authenticated user who can register or influence a Location entity in a deployment that has configured an allowedLocationTypes list can therefore trigger the backend to resolve a location type it was supposed to reject, potentially reading files on the backend host. This is a low-severity issue: it requires non-default configuration plus authenticated access and a specific inheritance edge case, and no public exploit code has been identified at time of analysis; the fix is in @backstage/plugin-catalog-backend 3.9.1 (Backstage release v1.54.6).
RemediationAI
Vendor-released patch: upgrade @backstage/plugin-catalog-backend to 3.9.1 or later, which corresponds to the Backstage release v1.54.6; the fix is available in commit 23774b61560d851bc69cd6a77d12561b24d11afd and is described in advisory GHSA-pcmq-25r3-5w9v (https://github.com/backstage/backstage/security/advisories/GHSA-pcmq-25r3-5w9v). If an immediate upgrade is not possible, the most effective compensating control is to restrict who can create or modify Location entities (for example by tightening Backstage permission policy rules around catalog-entity creation and location registration) so untrusted users cannot supply or influence a Location with an inherited 'file' or other disallowed type; the trade-off is that legitimate self-service catalog onboarding by those users is blocked. A second option is to disable or remove host-side location processors such as the file discovery/reading processor and rely on read-only static locations or SCM-backed 'url' locations only, accepting the loss of dynamic file-based catalog ingestion. Where only trusted administrators can register locations, or where allowedLocationTypes is not configured at all, exposure to this particular bypass is minimal and remediation can follow the normal upgrade cycle.
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
Backstage is an open framework for building developer portals, and its catalog backend ingests entities from configured 'locations' via processors. Administrators can constrain which location types the backend will accept using the allowedLocationTypes option, which CatalogBuilder passes into DefaultCatalogProcessingOrchestrator. The root cause is classified as CWE-22 (Improper Limitation of a Pathname to a Restricted Directory, i.e. path traversal) because the location-type allowlist is what stands between a user-supplied location and host-side file resolution (for example a 'file:' location). In the vulnerable orchestrator, the guard was written as a conditional that only ran when the type being processed differed from the parent location's type (type !== context.location.type); when a disallowed type such as 'file' was inherited from the parent/origin location, the condition evaluated false and the allowlist check was skipped entirely, so the processor proceeded to readLocation. The upstream commit 23774b6 adds an explicit allowedLocationTypes check that rejects any type not in the configured list unless it is inherited from an already-accepted context location, and emits a processing inputError instead of continuing. The attack surface is narrow: the check only exists when allowedLocationTypes is explicitly set (a non-default hardening configuration), the attacker must be able to supply or influence a Location entity, and the bypass depends on the inheritance case, which is why the assessed vector is AV:N/AC:H/PR:L/UI:N/S:U with a low confidentiality impact. No CPE strings were supplied with this CVE.
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:U/C:H/I:N/A:N
Authenticated location registration gives PR:L; dependence on non-default allowedLocationTypes config plus the type-inheritance bypass gives AC:H; 'unintended file access' is treated as a limited local-file read, so C:L.
Primary rating from NVD.
CVSS VectorNVD
Lifecycle Timeline
3DescriptionNVD
Backstage is an open framework for building developer portals. Prior to 3.9.1, the @backstage/plugin-catalog-backend package is affected by inconsistent enforcement of allowed location types during catalog processing. Under certain configurations, the catalog backend could process location types that were not intended to be allowed, potentially leading to unintended file access on the backend host. This issue is fixed in version 3.9.1.
Blast Radius
ecosystem impact- 29 npm packages depend on @backstage/plugin-catalog-backend (14 direct, 15 indirect)
Ecosystem-wide dependent count for version 3.9.1.
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
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
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.
Path traversal in the Backstage Scaffolder Bitbucket pull-request publish actions allows an authenticated user who can e
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-94052
GHSA-pcmq-25r3-5w9v
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB