Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege Backstage user
-
ExploitCraft TechDocs static path with traversal sequences
-
ExecutionBypass entity-level permission boundary
-
ImpactRead restricted docs from Azure Blob Storage
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 ALL of: (1) an authenticated Backstage user account (PR:L); (2) the TechDocs backend configured to use the Azure Blob Storage publisher provider specifically - other publisher backends are not indicated as affected; and (3) entity-level permissions enabled, which is the boundary being bypassed. The limiting factors that reduce realistic risk are the authentication requirement and the Azure-Blob-Storage-only scope. The aggravating factor explicitly noted by the vendor: deployments that intentionally disable the default backend authentication policy 'may have broader exposure.' Affected versions are prior to @backstage/plugin-techdocs-backend 2.2.4. |
| Impact | This is a moderate-severity, authenticated information-disclosure (path traversal / CWE-22) issue, not an unauthenticated critical. The provided CVSS vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N = 6.5) is internally consistent with the description: network-reachable, low complexity, but requires an authenticated Backstage user (PR:L) and yields confidentiality impact only (read restricted TechDocs), with no integrity or availability impact. No EPSS score, no CISA KEV listing, and no public exploit were provided in the input, so there is no signal of active or probable exploitation; exploitation status is 'no public exploit identified at time of analysis.' SSVC-style reasoning puts this as a low-urgency item: exploitation=none observed, automatable=no (requires valid authentication and a specific storage backend), technical impact=partial (confidentiality only). The real-world risk is further narrowed by two necessary conditions stated in the description - use of the Azure Blob Storage publisher AND entity-level permissions - meaning only a subset of Backstage deployments are affected. The notable aggravating factor is that deployments which intentionally disable the default backend authentication policy 'may have broader exposure,' per the vendor. Net: a legitimately-filed but not high-priority issue for most environments; prioritize patching only where Azure Blob Storage + entity permissions are in use, or where the default backend auth policy is disabled. |
| Exploit ScenarioDerived | An attacker who already holds a valid (even low-privilege) Backstage account crafts a TechDocs static-content request containing path-traversal sequences (e.g. '../' or encoded Windows separators) to step outside the entity they are authorized to view and read restricted documentation served from Azure Blob Storage. No public exploit code was provided in the input; the fix commit and its added regression tests ('../private/index.html', encoded Windows separators) illustrate the traversal technique. Because the attack is network-based and low-complexity but requires authentication, it is realistic for any insider or compromised user account. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 06, 2026
Improper input validation in the @backstage/plugin-techdocs-backend static content router (versions prior to 2.2.4) lets an authenticated Backstage user reach TechDocs static files outside the entity they are authorized to view when the Azure Blob Storage publisher provider is configured and entity-level permissions are enabled, resulting in high-confidentiality information disclosure. The flaw is a path traversal (CWE-22) reachable over the network by a low-privileged account, rated CVSS 6.5 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N); Azure-Blob-Storage-only scope and the required authenticated session keep realistic risk moderate. No public exploit code or confirmed active exploitation was identified at time of analysis, and the vendor-released fix is @backstage/plugin-techdocs-backend 2.2.4, published in the Backstage monorepo release v1.54.6.
RemediationAI
Vendor-released patch: @backstage/plugin-techdocs-backend 2.2.4 - upgrade the plugin to 2.2.4 or later, or upgrade the Backstage monorepo to release v1.54.6 or later (https://github.com/backstage/backstage/releases/tag/v1.54.6), and redeploy the TechDocs backend; the advisory (GHSA-7mfx-xg57-53c9) and the fixing commit 40ecc4c2e88b0218125b0a3405d1f6315b321974 document the added path validation. Until the upgrade is applied, actionable compensating controls are: (1) re-enable the default backend authentication policy if it was intentionally disabled, since the vendor states those deployments have broader exposure - the trade-off is that some programmatic or unauthenticated integrations may stop working until they are re-authenticated; (2) verify entity-level permissions (permission.enabled) are turned on so the router's entity confinement is at least in effect, accepting that the traversal bypass itself remains until patched; (3) temporarily switch the TechDocs publisher away from azureBlobStorage to the local, GCS, or S3 publisher, which removes the vulnerable code path at the cost of re-publishing or migrating documentation artifacts; and (4) review TechDocs backend access logs for requests containing '..' or encoded path separators (%5c, %2e) against /static/docs/ endpoints, treating any hits from non-owner entities as evidence of attempted enumeration. Restricting backend network access does not meaningfully reduce risk here because the request originates from an authenticated portal user.
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-source framework for building developer portals, and TechDocs is its documentation subsystem: a docs-build step publishes static HTML and asset bundles to a storage publisher, and the techdocs-backend plugin serves those files through an Express router that maps request paths such as /static/docs/<namespace>/<kind>/<entity>/<path> to objects in the publisher backend. The vulnerable code performs insufficient normalization and validation of the requested static content path, so traversal sequences (and, per the upstream regression tests, encoded Windows path separators) can escape the directory prefix associated with the authorized entity. This is a classic CWE-22 path traversal arising from missing canonicalization and prefix enforcement, aggravated here because the Azure Blob Storage publisher resolves blob names in a way that tolerates the manipulated path, whereas other publisher implementations are not indicated as affected. The security boundary that is bypassed is the entity-level permission check: when permission.enabled is true, the router is expected to confine each request to the requesting entity's own documents, and the validation gap permits reading another entity's restricted TechDocs content. The upstream fix commit (40ecc4c2e88b0218125b0a3405d1f6315b321974) adds a dedicated path-validation routine and tests that assert a 404 for /static/docs/default/component/test/../private/index.html and for encoded separators against the Azure Blob Storage publisher. Because the vector is PR:L, exploitation requires a valid Backstage session, and because it is C:H/I:N/A:N, the impact is disclosure-only - no data modification or code execution is involved.
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 Backstage user is required (PR:L) over the network (AV:N) with low complexity; impact is reading restricted docs, so C:H and I/A:N.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Backstage is an open framework for building developer portals. Prior to 2.2.4, the @backstage/plugin-techdocs-backend package is affected by improper input validation in techdocs static content requests. When using the Azure Blob Storage provider, an authenticated Backstage user may be able to read restricted TechDocs content when entity-level permissions are enabled. Deployments that intentionally disable the default backend authentication policy may have broader exposure. This issue is fixed in version 2.2.4.
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.
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-94009
GHSA-7mfx-xg57-53c9
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB