Skip to main content

Backstage CVE-2026-106494

| EUVDEUVD-2026-94015 MEDIUM
Path Traversal (CWE-22)
2026-10-06 GitHub_M GHSA-7649-wm97-w3j3
4.9
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 trusted storage bucket
  2. Delivery
    Upload object with traversal name (../ or %2e%2e)
  3. Exploit
    Backstage URL reader ingests object tree
  4. Execution
    Crafted name collides with protected output path
  5. Impact
    Inject attacker-controlled content

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 that Backstage be configured to use a cloud storage URL reader (AWS S3, AWS CodeCommit, or Azure Blob Storage) to ingest content such as TechDocs, AND that the attacker possess write access to that specific bucket/repository to create objects with malicious names. The description further limits impact to 'certain deployment configurations' where a traversal-crafted object name collides with a protected file in the output directory - so deployments without writable-bucket exposure, or not using these cloud readers, are not affected. The required bucket write privilege (reflected as PR:H) and the non-trivial collision condition (reflected as AC:H) are the key limiting factors; there is no user-interaction requirement.

Impact

This is a genuine but low-priority issue whose signals are internally consistent rather than conflicting. The CVSS 3.1 vector (AV:N/AC:H/PR:H/UI:N/S:U/C:N/I:H/A:N, base 4.4 Medium) tells the real story: although the attack is network-reachable, it carries HIGH attack complexity and requires HIGH privileges - specifically pre-existing write access to a cloud storage bucket (S3, AWS CodeCommit, or Azure Blob) that Backstage already trusts and reads from. Impact is limited to integrity (I:H) via content injection, with no confidentiality or availability loss. No EPSS score, CISA KEV listing, or public POC was provided in the intelligence set, so there is no evidence of active exploitation or widespread weaponization; this is consistent with the AC:H/PR:H profile, which makes opportunistic mass exploitation unlikely. The practical risk is bounded to scenarios where an adversary (insider, compromised CI credential, or third party with bucket write access) already holds a foothold in the storage backend - making this a hardening/defense-in-depth fix rather than an urgent remediation for most deployments. Note: the fix-version signals disagree between sources - the description cites @backstage/backend-defaults 0.17.8 while a referenced GitHub release tag reads v1.54.6; verify the correct artifact before patching.

Exploit ScenarioDerived

An attacker who already holds write access to a cloud storage bucket that Backstage's URL reader ingests (e.g., a TechDocs S3 bucket) uploads an object whose name embeds path-traversal segments such as 'uploads/../legitimate.yaml' or encoded variants like '%2e%2e'. When Backstage reads the bucket tree, the crafted object name collides with or overwrites a protected file in the output directory, injecting attacker-controlled content. No public exploit code was identified at time of analysis, though the fix commit's regression tests effectively document the malicious inputs.

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

Content injection in Backstage's cloud storage URL readers (the @backstage/backend-defaults package before 0.17.8) allows an attacker who holds write access to a configured AWS S3 bucket, AWS CodeCommit repository, or Azure Blob Storage container to craft object names containing path traversal segments so that an ingested object can collide with a protected file in the reader's output directory, overwriting or injecting content in certain deployment configurations. The issue is a CWE-22 improper-limitation-of-pathname flaw with an integrity-only impact, scored CVSS 4.4 (AV:N/AC:H/PR:H/UI:N/S:U/C:N/I:H/A:N), meaning exploitation demands high privileges (bucket write access) and a non-trivial collision condition, while confidentiality and availability are unaffected. No public exploit code and no confirmed active exploitation were identified at time of analysis, and a vendor patch is available in @backstage/backend-defaults 0.17.8 (Backstage v1.54.6).

RemediationAI

Upgrade to @backstage/backend-defaults version 0.17.8, which corresponds to the Backstage v1.54.6 release and contains the input-validation fix (vendor-released patch: 0.17.8), as referenced in advisory GHSA-7649-wm97-w3j3 and upstream commit 14e925ce5b905dd8daa64c3009722febda76034c. Because the vulnerable code now rejects object names containing literal, backslash, or percent-encoded dot-dot segments, any deployment that relied on such names for legitimate content will see those entries skipped after upgrading - verify TechDocs and other ingested content still resolves after the change. Where immediate upgrading is not possible, the most effective compensating control is to revoke write access to any bucket, repository, or container consumed by a Backstage URL reader from untrusted principals, since the flaw requires attacker-controlled object names to be written into that store; this is a configuration-hygiene control rather than a code fix and does nothing if a trusted-but-compromised principal retains write access. Additional hardening with clear trade-offs: point each reader at a dedicated, minimally-shared bucket and use a narrow prefix so the set of objects the reader can materialize is small (reduces blast radius but requires re-organizing content layout and re-issuing credentials); run the Backstage backend with a restricted filesystem user and a confined, disposable output directory so a traversal collision cannot overwrite sensitive files outside it (may break workflows that expect persistent output paths); and monitor or alert on object keys containing '..', backslashes, or '%2e' sequences in the consumed storage (adds observability but does not block the write itself). Note that the impact assessment is integrity-only (C:N/A:N), so these controls should be prioritized accordingly relative to higher-severity findings.

Affected VersionsENISA

backstage < 1.54.6
backend-defaults < 0.17.8

Affected Packages

npm @backstage/backend-defaults fix: 0.17.8
euvd backend_defaults fix: 0.17.8
euvd backstage fix: 1.54.6

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's backend-defaults package supplies 'URL readers' that fetch and materialize remote content - most visibly TechDocs - from sources such as AWS S3 (AwsS3UrlReader), AWS CodeCommit (AwsCodeCommitUrlReader), and Azure Blob Storage (AzureBlobStorageUrlReader). Each reader lists objects under a configured prefix and writes the retrieved files into a local output/target directory, using the object key or repository-relative path to reconstruct the destination path. Because the object name was trusted verbatim, a key such as 'prefix/uploads/../legitimate.yaml', a backslash variant 'uploads\..', or percent-encoded forms ('%2e%2e', '.%2e', '%2E%2E') could resolve outside the intended subtree and overwrite a protected file already present in the output directory - the classic CWE-22 path traversal class applied to cloud object names rather than HTTP parameters. The upstream fix introduces a hasDotPathSegments() helper in the reader 'util' module and calls it while iterating the listed files/objects in AwsCodeCommitUrlReader.ts and AwsS3UrlReader.ts (and correspondingly across the other cloud readers), skipping any entry whose path contains dot or dot-dot segments in literal, backslash, or URL-encoded form; unit tests added alongside the change assert that maliciously named entries are filtered out while legitimate files still materialize.

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 MEDIUM
NVD 4.9 MEDIUM
AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:H/A:N
vuln.today AI 4.4 MEDIUM

Attacker needs pre-existing write access to a trusted cloud bucket (PR:H) and a specific collision-prone deployment config (AC:H); impact is content injection, so I:H with no C or A.

3.1 AV:N/AC:H/PR:H/UI:N/S:U/C:N/I:H/A:N
4.0 AV:N/AC:H/AT:N/PR:H/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
Red Hat 4.4 MEDIUM

Primary rating from Vendor (GitHub_M).

CVSS VectorNVD

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

Lifecycle Timeline

2
CVSS changed
Oct 22, 2026 - 13:07 NVD
4.4 (MEDIUM) 4.9 (MEDIUM)
Patch available
Oct 06, 2026 - 22:20 EUVD

DescriptionNVD

Backstage is an open framework for building developer portals. Prior to 0.17.8, the @backstage/backend-defaults package is affected by improper input validation in cloud storage url readers. An attacker with write access to a cloud storage bucket used by Backstage could craft object names that could collide with protected files in the output directory. In certain deployment configurations, this could lead to content injection. This issue is fixed in version 0.17.8.

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 81% exploitable
Prevalence
Medium
popular CNCF developer-portal framework, common in engineering orgs but not everywhere
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
8 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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

24
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +24
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-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-106486 HIGH
8.5 Oct 06

Path traversal in the Backstage Scaffolder Bitbucket pull-request publish actions allows an authenticated user who can e

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