Skip to main content

Backstage TechDocs EUVDEUVD-2026-94073

| CVE-2026-106508 MEDIUM
Path Traversal (CWE-22)
2026-10-06 security-advisories@github.com GHSA-cm77-ch27-6w6v
6.5
CVSS 3.1 · NVD
View

Attack ChainAIDerived

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

  1. Access
    Authenticate to Backstage portal
  2. Delivery
    Plant external symlink in docs source tree
  3. Exploit
    Request linked path via TechDocs serving endpoint
  4. Execution
    Endpoint follows symlink outside output dir
  5. Impact
    Read arbitrary host file contents

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

Requires ALL of the following: (1) the TechDocs backend configured with techdocs.publisher.type: 'local' - cloud publishers (S3, GCS, Azure Blob Storage) are explicitly NOT affected; (2) a published documentation directory that contains a symbolic link pointing outside the intended output tree (e.g. to /etc/passwd), which the vendor states does not arise through normal MkDocs operation; and (3) an authenticated user (PR:L) able to reach the documentation serving endpoint. Limiting factors: the non-default local publisher, the need for a pre-existing malicious/misconfigured symlink in the docs source, authenticated access, and confidentiality-only impact (no integrity or availability effect). These combine to the vendor's own 'preconditions that do not arise through normal operation,' consistent with AC:H.

Impact

This is a high-CVSS-component but genuinely low-real-world-risk issue, and the signals are largely consistent. The provided CVSS 3.1 vector (AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N = 5.3 Medium) shows a network-reachable serving endpoint but with HIGH attack complexity and LOW-privilege authentication required, and only a confidentiality impact. The vendor (GitHub Security Advisory GHSA-cm77-ch27-6w6v) explicitly states exploitation 'requires preconditions that do not arise through normal MkDocs operation,' which directly supports the AC:H rating and sharply reduces practical exploitability. No EPSS score, no CISA KEV listing, and no public exploit code were provided - the only code evidence is the vendor's own remediation commit, not a proof-of-concept. Exploitation status is therefore: no public exploit identified at time of analysis. The C:H impact (arbitrary host file exposure such as /etc/passwd, per the test fixtures) is the one signal that justifies attention, but it is strongly gated: only the local publisher (techdocs.publisher.type: 'local', a non-recommended production mode) is affected, cloud publishers (S3, GCS, Azure Blob) are explicitly not affected, and a malicious symlink must already exist in the documentation tree. Net: patch during normal maintenance rather than emergency response. One inconsistency to flag: the 'Microsoft' tag in the input is incorrect - Backstage is an independent CNCF/Spotify open-source project, not a Microsoft product.

Exploit ScenarioDerived

An authenticated Backstage user browses TechDocs on an instance configured with the local publisher, where a published documentation bundle contains a symlink (e.g. 'leaked' -> /etc/passwd) that was committed or planted in the source docs. When the serving endpoint follows that filesystem reference, the attacker reads host files outside the intended documentation tree. No public proof-of-concept exists - only the vendor patch is available - and the high attack complexity (symlinks do not arise from normal MkDocs builds) makes opportunistic exploitation unlikely.

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

Filesystem path traversal in the Backstage TechDocs local publisher (@backstage/plugin-techdocs-node) can expose host files - such as /etc/passwd - to authenticated users of the documentation serving endpoint when the backend is configured with techdocs.publisher.type: 'local'. Exploitation requires a documentation source tree that already contains a symbolic link pointing outside the intended output directory, a precondition the vendor states does not arise through normal MkDocs operation, plus an authenticated user able to reach the endpoint (CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N, base 5.3, confidentiality-only impact). Cloud publishers (S3, GCS, Azure Blob Storage) are explicitly not affected, and no public exploit code has been identified at time of analysis; the issue is fixed in @backstage/plugin-techdocs-node 1.15.4.

RemediationAI

Vendor-released patch: upgrade @backstage/plugin-techdocs-node to 1.15.4 or later (the fix ships in the Backstage v1.54.6 release tag, commit 6aecb26f337ffec1d4e67ce903cf1e39b6082ec4), which adds recursive symlink validation during publish and rejects any link resolving outside the documentation output root. If upgrading immediately is not possible, the most effective compensating control is to stop using the local publisher and switch techdocs.publisher.type to a cloud backend (S3, GCS, or Azure Blob Storage), which are unaffected by this flaw - the trade-off is that this requires cloud storage credentials, network egress, and a migration of existing published artifacts, and it changes where TechDocs content is stored and cached. Alternatively, sanitize documentation sources before publishing by rejecting or dereferencing symlinks (for example, validating with 'find <dir> -type l' in CI or building with tools that do not emit symlinks), accepting that this relies on operator discipline and does not protect against links introduced after the check. Restricting network access to the TechDocs documentation endpoint to trusted authenticated users reduces exposure but does not eliminate the flaw and degrades normal documentation availability for other users; note the issue requires authenticated access (PR:L) in the first place, so anonymous exposure is not the primary risk vector. See the advisory (https://github.com/backstage/backstage/security/advisories/GHSA-cm77-ch27-6w6v) for the definitive fixed-version guidance.

Affected VersionsENISA

backstage < 1.54.6
plugin-techdocs-node < 1.15.4

Affected Packages

npm @backstage/plugin-techdocs-node fix: 1.15.4
euvd backstage fix: 1.54.6
euvd plugin_techdocs_node fix: 1.15.4

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 TechDocs plugin builds static documentation sites with MkDocs and then 'publishes' the generated output through a configurable PublisherBase implementation. The local publisher (LocalPublish in plugins/techdocs-node/src/stages/publish/local.ts) copies the generated tree onto the Backstage host filesystem and serves it back through an Express static handler. Because publishing and serving operated on raw filesystem entries, a symbolic link inside the published directory (CWE-22 improper limitation of a pathname to a restricted directory) would be followed at serve time, allowing reads of arbitrary host files reachable by the process account. The upstream fix introduces a recursive validateNoExternalSymlinks() walk that inspects every directory entry during publish, rejects any symlink whose resolved location fails the isChildPath(root, fullPath) check by throwing a Backstage NotAllowedError, and recurses into subdirectories; regression tests added to local.test.ts confirm external symlinks at the top level and in nested subdirectories are rejected while internal symlinks still resolve. The advisory maps to CWE-22 and the affected CPE set is limited to deployments of @backstage/plugin-techdocs-node prior to 1.15.4 that opt into the non-default local publisher; S3/GCS/Azure Blob publishers perform no local filesystem traversal and are unaffected.

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

Network-reachable serving endpoint (AV:N) but requires a pre-planted external symlink not produced by normal builds (AC:H) and an authenticated user (PR:L); arbitrary host file read gives C:H, no I/A impact.

3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:H/AT:P/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (github).

CVSS VectorNVD

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

Lifecycle Timeline

3
CVSS changed
Oct 09, 2026 - 17:52 NVD
5.3 (MEDIUM) 6.5 (MEDIUM)
Patch available
Oct 06, 2026 - 23:05 EUVD
CVE Published
Oct 06, 2026 - 22:17 cve.org
MEDIUM 5.3

DescriptionNVD

Backstage is an open framework for building developer portals. Prior to 1.15.4, the @backstage/plugin-techdocs-node package is affected by potential file exposure through local techdocs publisher. When using the local TechDocs publisher (techdocs.publisher.type: 'local'), it was possible for the documentation serving endpoint to follow filesystem references outside the intended documentation tree, potentially exposing host files to authenticated users. This is mitigated by the fact that exploration requires preconditions that do not arise through normal MkDocs operation. Cloud-based publishers (S3, GCS, Azure Blob Storage) are not affected. This issue is fixed in version 1.15.4.

Threat Intelligence Overview

EPSS Score
0.3%
Top 81% exploitable
Prevalence
Medium
popular CNCF developer-portal framework, but local publisher is non-default
Threat Intel
1
1 sources
Data Quality
7 sources
Confidence: High
EUVD 🇯🇵JVN NVD CVE.org EPSS Vulnrichment GHSA 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

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
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

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