Skip to main content

Backstage CVE-2026-106493

| EUVDEUVD-2026-94013 MEDIUM
Path Traversal (CWE-22)
2026-10-06 GitHub_M GHSA-xvh9-35w9-42m4
4.1
CVSS 3.1 · NVD
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain write access to configured S3/Azure catalog source
  2. Delivery
    Create or rename object with encoded dot-segment path
  3. Exploit
    Backstage URL reader resolves traversal path
  4. Execution
    Catalog descriptor read outside intended boundary
  5. Impact
    Disclosure of data reachable with backend credentials

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 (1) a Backstage deployment version prior to 1.54.6 that is configured to use a cloud storage catalog provider - specifically an Azure Blob Storage source (via @backstage/plugin-catalog-backend-module-azure) or an AWS S3 source (via @backstage/plugin-catalog-backend-module-aws / backend-defaults cloud URL readers); and (2) the attacker being a principal already authorized to create or rename objects (object keys / blob names) within that configured storage source. The attacker must craft an object name containing dot-path segments, including URL-encoded forms such as %2e%2e, %2E%2E, or backslash-delimited variants, to escape the intended prefix. Exploitation is LIMITED by: the need for pre-existing write access to the trusted catalog storage (not a default-open remote condition), the requirement that the target data be reachable only with the backend's own configured credentials (no privilege escalation beyond the backend's existing storage access), and confidentiality-only impact (read of catalog descriptors, no write or availability effect). It does NOT apply to Backstage instances that do not use Azure Blob or AWS S3 catalog sources.

Impact

This is a genuinely low-priority issue despite being a path traversal (CWE-22) weakness. The provided CVSS:3.1 vector (AV:N/AC:H/PR:H/UI:N/S:C/C:L/I:N/A:N = 3.0, Low) tells a consistent story: although the attack vector is network-based, exploitation requires HIGH privileges (PR:H) and HIGH attack complexity (AC:H), and the impact is confidentiality-only and limited (C:L, I:N, A:N). The prerequisite - being a principal already able to create or rename objects in a configured Azure Blob Storage or AWS S3 catalog source - means the attacker must already hold write access to a trusted catalog backend, which heavily constrains the population of potential abusers to insiders or already-compromised writers. The scope change (S:C) is the only aggravating signal, reflecting that the backend can be coerced into reading descriptors from storage locations outside the intended boundary, but even that is bounded to locations reachable with the backend's own configured credentials. No EPSS score, KEV listing, POC, or SSVC decision data was supplied in the input; absence of these is not itself a risk indicator, but there is nothing here suggesting mass or automatable exploitation. The CVSS network/local signals are not contradictory - the storage is accessed over the network, but the real gating factor is the required write privilege, so defenders should treat this as an authenticated/insider confidentiality concern rather than a remote-exploitable critical flaw.

Exploit ScenarioDerived

An actor who already has permission to create or rename objects in an organization's AWS S3 bucket or Azure Blob container used as a Backstage catalog source uploads or renames an object so its key/blob name contains encoded dot-segments (e.g. %2e%2e). When Backstage's catalog backend resolves that path, it is tricked into reading a catalog descriptor from outside the intended storage prefix, exposing content reachable with the backend's configured storage credentials. No public exploit identified at time of analysis, so any attempt would require an actor to craft the traversal payload themselves.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 06, 2026

Backstage deployments prior to 1.54.6 that use Azure Blob Storage or AWS S3 catalog sources can be induced to read catalog descriptors from outside the configured storage boundary - an object-storage path traversal in the cloud storage catalog providers and cloud URL readers. Exploitation requires an authenticated principal with high privileges (CVSS PR:H) who already has permission to create or rename objects in the trusted catalog bucket or container, and who then crafts object names containing dot-path segments (including encoded forms such as %2e%2e or backslash-delimited variants) to escape the intended prefix; the read is limited to locations reachable with the backend's own configured storage credentials, and impact is confidentiality-only (CVSS 3.0, AV:N/AC:H/PR:H/S:C/C:L/I:N/A:N). No public exploit code has been identified at time of analysis and the issue is not listed in CISA KEV; a vendor-released patch is available in 1.54.6.

RemediationAI

Upgrade to Backstage 1.54.6 or later, which contains the vendor-released patch (commit 47ddbd8b4a3efd812309f759c38f4877fbd9e5ff) and updates the catalog backend modules and backend-defaults cloud URL readers; see the advisory at https://github.com/backstage/backstage/security/advisories/GHSA-xvh9-35w9-42m4 and the release notes at https://github.com/backstage/backstage/releases/tag/v1.54.6. If immediate upgrade is not possible, the most effective compensating control is to restrict write access to the configured catalog bucket or container: grant create/rename (object put and copy) rights to as few principals as possible and keep the catalog storage read-only for everyone else, since exploitation requires a principal that can introduce crafted object names - the trade-off is reduced flexibility for teams that currently publish catalog-info.yaml files directly to that storage. Additionally, scope the backend's storage credentials to the narrowest prefix or container that the catalog actually needs, which caps the reachable traversal surface at the cost of possibly splitting the catalog across multiple configured sources, and audit existing object keys for dot-path segments or percent-encoded sequences. These are mitigations only; the path traversal logic itself is fixed solely by upgrading to 1.54.6.

Affected VersionsENISA

plugin-catalog-backend-module-azure < 0.3.21
plugin-catalog-backend-module-azure < 0.17.8
plugin-catalog-backend-module-aws < 0.4.27
backstage < 1.54.6

Affected Packages

npm @backstage/backend-defaults fix: 0.17.8
npm @backstage/plugin-catalog-backend-module-aws fix: 0.4.27
npm @backstage/plugin-catalog-backend-module-azure fix: 0.3.21
euvd backstage fix: 1.54.6
euvd plugin_catalog_backend_module_aws fix: 0.4.27
euvd plugin_catalog_backend_module_azure fix: 0.3.21, 0.17.8

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 6 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 weakness is a classic path traversal (CWE-22) arising from a validate-before-decode mismatch in Backstage's cloud storage reader stack, tracked against the CPEs for backstage:backstage and the @backstage/plugin-catalog-backend-module-azure and @backstage/plugin-catalog-backend-module-aws packages, with the fix landing additionally in @backstage/backend-defaults. The affected code (AwsS3UrlReader.ts and AzureBlobStorageUrlReader.ts) previously checked the raw, still-encoded URL path for dot segments via hasDotPathSegments, then derived the object key or blob name from the pathname; because percent-encoded dot segments (%2e%2e, %2E%2E, mixed forms like .%2e or %2e., and backslash-delimited variants such as %2e%2e%5c) were not decoded before validation, they passed the check and were subsequently decoded and resolved by the storage SDK, allowing traversal above the configured prefix. The upstream commit introduces isUrlPathWithoutDotSegments in util.ts, which parses the authority-relative pathname and rejects any URL whose path contains dot segments, and changes the readers to decode each path segment exactly once (split('/').map(decodeURIComponent)) after validation, closing the single- and double-encoding bypasses. The CVSS scope change (S:C) reflects that the reader acts under the backend's own storage identity and can therefore reach objects outside the catalog's intended prefix but within the credentials' permission set; confidentiality impact is low because only catalog descriptor content is exposed, with no integrity or availability effect.

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

Vendor (GitHub_M) PRIMARY LOW
NVD 4.1 MEDIUM
AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:N/A:N
vuln.today AI 3.0 LOW

Requires existing write access to the cloud catalog source so PR:H, with crafted encoded-traversal keys giving AC:H; scope changes to storage (S:C) with limited read-only disclosure (C:L, I:N, A:N).

3.1 AV:N/AC:H/PR:H/UI:N/S:C/C:L/I:N/A:N
4.0 AV:N/AC:H/AT:N/PR:H/UI:N/VC:N/VI:N/VA:N/SC:L/SI:N/SA:N
Red Hat 2.2 LOW

Primary rating from Vendor (GitHub_M).

CVSS VectorNVD

Attack Vector
Network
Attack Complexity
Low
Privileges Required
High
User Interaction
None
Scope
Changed
Confidentiality
Low
Integrity
None
Availability
None

Lifecycle Timeline

4
Severity Changed
Oct 22, 2026 - 13:22 NVD
LOW MEDIUM
CVSS changed
Oct 22, 2026 - 13:22 NVD
3.0 (LOW) 4.1 (MEDIUM)
Patch available
Oct 06, 2026 - 22:20 EUVD
CVE Published
Oct 06, 2026 - 20:52 cve.org
LOW 3.0

DescriptionNVD

Backstage is an open framework for building developer portals. Prior to 1.54.6, cloud storage catalog providers did not sufficiently validate object paths. A principal able to create or rename objects in a configured Azure Blob Storage or AWS S3 catalog source could cause catalog descriptors to be read from outside the intended storage boundary, limited to locations reachable with the backend's configured credentials. This issue is fixed in 1.54.6.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 111 npm packages depend on @backstage/backend-defaults (104 direct, 8 indirect)

Ecosystem-wide dependent count for version 0.17.8.

Threat Intelligence Overview

EPSS Score
0.3%
Top 84% exploitable
Prevalence
Medium
Backstage is a popular developer-portal framework, but cloud-storage catalog providers are an optional subset
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor CIRCL GitHub VulDB

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Defer
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

20
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +20
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.

CVE-2026-106486 CRITICAL
9.9 Oct 06

The Bitbucket pull-request Scaffolder actions in Backstage can be abused by an authenticated user with template-executio

CVE-2023-35926 CRITICAL
9.9 Jun 22

Backstage is an open platform for building developer portals. Rated critical severity (CVSS 9.9), this vulnerability is

CVE-2026-106501 CRITICAL
9.6 Oct 06

Authenticated Backstage users can retrieve the internal execution data of other users' Scaffolder tasks - notably the Se

CVE-2026-88064 HIGH
8.8 Sep 16

Authenticated users who can register or modify a TechDocs documentation source can achieve code execution inside the Bac

CVE-2026-106558 HIGH
8.8 Oct 07

Authenticated remote code execution in the @backstage/plugin-techdocs-node package shipped with the Backstage developer

CVE-2026-106509 HIGH
8.8 Oct 06

Arbitrary code execution in Backstage TechDocs documentation builds allows an authenticated user with write access to a

CVE-2026-25153 HIGH
8.8 Jan 30

Arbitrary Python code execution in Backstage's @backstage/plugin-techdocs-node (versions < 1.13.11 and = 1.14.0) lets a

CVE-2026-106500 HIGH
8.5 Oct 06

Improper task-state validation in the @backstage/plugin-scaffolder-backend plugin (Backstage versions prior to 3.3.1, 3.

CVE-2026-106505 HIGH
8.5 Oct 06

Arbitrary code execution on the TechDocs backend host is achievable through a sanitizer bypass in the @backstage/plugin-

CVE-2026-106459 HIGH
8.5 Oct 06

Improper input validation in the @backstage/plugin-scaffolder-backend-module-sentry scaffolder actions (Backstage 0.3.0

CVE-2021-43783 HIGH
8.5 Nov 29

@backstage/plugin-scaffolder-backend is the backend for the default Backstage software templates. Rated high severity (C

CVE-2026-106503 HIGH
8.1 Oct 06

Authenticated users of Backstage Scaffolder can bypass administrator-configured action restrictions in @backstage/plugin

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy