Backstage TechDocs
CVE-2026-25153
HIGH
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain repo contributor or PR access
-
DeliveryAdd malicious hooks: entry to mkdocs.yml
-
ExploitTechDocs local build loads MkDocs hook
-
ExecutionArbitrary Python executes on build server
-
ImpactFull compromise of build environment
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Code injection prevention, sandbox exec
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires TechDocs to be configured with |
| Impact | Signals are mixed but coherent. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H = 8.8) describes a network-reachable, low-complexity attack requiring only low privileges (a repository contributor) and no user interaction, yielding full confidentiality/integrity/availability impact on the build server - consistent with the description. The EPSS score is very low (0.02%, 6th percentile) and the CVE is NOT in CISA KEV, with no public exploit identified, indicating no observed mass exploitation. This is best read as a real but conditional risk: it is gated on the non-default-sensitive |
| Exploit ScenarioDerived | An attacker with contributor or fork-PR access to a repository that Backstage TechDocs builds adds a |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv5 – Jun 30, 2026
Arbitrary Python code execution in Backstage's @backstage/plugin-techdocs-node (versions < 1.13.11 and = 1.14.0) lets a contributor who can add or edit a repository's mkdocs.yml inject a malicious MkDocs hooks directive that runs on the TechDocs build server whenever TechDocs is configured with runIn: local. The flaw also affects documentation built in CI/CD via @techdocs/cli, which bundles the same package. EPSS is very low (0.02%, 6th percentile) and there is no public exploit identified at time of analysis, but the CVSS of 8.8 reflects full host compromise of the build environment.
Earlier versions of this analysis (4)
Arbitrary Python code execution affects @backstage/plugin-techdocs-node before 1.13.11 and 1.14.1 when TechDocs runs with runIn: local, allowing any contributor who can submit or alter a repository's mkdocs.yml to run code on the TechDocs build server via the MkDocs hooks directive. The CVSS 3.1 score is 8.8 (high), reflecting network reach, low privileges, and full confidentiality/integrity/availability impact on the build host; there is no public exploit identified at time of analysis and EPSS is very low (0.02%, 6th percentile), so this is a credible but not yet widely-exploited build-pipeline risk. The fix introduces an allowlist that strips unsupported keys such as hooks from mkdocs.yml before generation.
Arbitrary Python code execution in @backstage/plugin-techdocs-node (versions before 1.13.11 and the 1.14.x line before 1.14.1) lets an attacker who can edit a repository's mkdocs.yml run code on the TechDocs build server when TechDocs runs with runIn: local. By abusing the MkDocs hooks configuration key, a contributor with commit or pull-request access can have attacker-supplied Python executed during the documentation build. Publicly available exploit code exists via the GHSA advisory's technical detail, but there is no public exploit identified as weaponized; EPSS is very low at 0.02% (6th percentile) and it is not listed in CISA KEV.
Remote code execution in @backstage/plugin-techdocs-node (versions before 1.13.11 and 1.14.1) allows an attacker who can submit or modify a repository's mkdocs.yml to run arbitrary Python on the TechDocs build server when TechDocs is configured with runIn: local, by abusing the MkDocs hooks configuration directive. The flaw (CWE-94 code injection) carries a CVSS 8.8 and also affects @techdocs/cli, since it bundles the same vulnerable package. There is no public exploit identified at time of analysis and EPSS is very low (0.02%), but the attack is technically simple for anyone with repository contribution rights.
Backstage is an open framework for building developer portals, and @backstage/plugin-techdocs-node provides common node.js functionalities for TechDocs. [CVSS 7.7 HIGH]
RemediationAI
Vendor-released patch: upgrade @backstage/plugin-techdocs-node to 1.13.11 or 1.14.1 (or later); the fix adds an allowlist of supported MkDocs configuration keys and strips unsupported keys including hooks from mkdocs.yml before generation, logging a warning for removed keys. Red Hat users should apply RHSA-2026:6174 and RHSA-2026:6802. Users of @techdocs/cli must also upgrade to the latest version since it bundles the vulnerable package - building docs in CI/CD does not avoid the issue. If immediate upgrade is impossible, switch TechDocs to runIn: docker for container isolation (note: this contains but does not fully eliminate the risk, as malicious code still runs inside the container); restrict who can modify mkdocs.yml to trusted contributors only (trade-off: added contribution friction); enforce mandatory PR review on mkdocs.yml changes to catch malicious hooks entries before merge (trade-off: relies on reviewer vigilance); or pin MkDocs to < 1.4.0 such as 1.3.1 which has no hooks support (trade-off: loses newer MkDocs features). Advisory: https://github.com/backstage/backstage/security/advisories/GHSA-6jr7-99pf-8vgf.
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The affected component is the Node.js TechDocs generator (npm @backstage/plugin-techdocs-node), which drives the Python-based MkDocs static-site generator to build developer documentation. MkDocs 1.4.0+ supports a hooks configuration key (https://www.mkdocs.org/user-guide/configuration/#hooks) that loads and executes arbitrary Python modules at build time by design. The root cause is CWE-94 (Code Injection): the plugin passed the repository-supplied mkdocs.yml to the generator without filtering keys, so an attacker-controlled hooks entry was honored and its Python executed in the build process. The CPE data (cpe:2.3:a:linuxfoundation:backstage) confirms the Linux Foundation Backstage project as the affected product family.
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:H/A:H
A repo contributor (PR:L) submits a malicious mkdocs.yml processed remotely with no interaction (AV:N/UI:N); the hook runs Python on the build host giving full C:H/I:H/A:H, scope unchanged.
Primary rating from NVD.
CVSS VectorNVD
Lifecycle Timeline
7DescriptionNVD
Backstage is an open framework for building developer portals, and @backstage/plugin-techdocs-node provides common node.js functionalities for TechDocs. In versions of @backstage/plugin-techdocs-node prior to 1.13.11 and 1.14.1, when TechDocs is configured with runIn: local, a malicious actor who can submit or modify a repository's mkdocs.yml file can execute arbitrary Python code on the TechDocs build server via MkDocs hooks configuration. @backstage/plugin-techdocs-node versions 1.13.11 and 1.14.1 contain a fix. The fix introduces an allowlist of supported MkDocs configuration keys. Unsupported configuration keys (including hooks) are now removed from mkdocs.yml before running the generator, with a warning logged to indicate which keys were removed. Users of @techdocs/cli should also upgrade to the latest version, which includes the fixed @backstage/plugin-techdocs-node dependency. Some workarounds are available. Configure TechDocs with runIn: docker instead of runIn: local to provide container isolation, though it does not fully mitigate the risk. Limit who can modify mkdocs.yml files in repositories that TechDocs processes; only allow trusted contributors. Implement PR review requirements for changes to mkdocs.yml files to detect malicious hooks configurations before they are merged. Use MkDocs < 1.4.0 (e.g., 1.3.1) which does not support hooks. Note: This may limit access to newer MkDocs features. Building documentation in CI/CD pipelines using @techdocs/cli does not mitigate this vulnerability, as the CLI uses the same vulnerable @backstage/plugin-techdocs-node package.
Blast Radius
ecosystem impact- 2 npm packages depend on @backstage/plugin-techdocs-node (2 direct, 0 indirect)
Ecosystem-wide dependent count for version 1.14.0.
Executive ViewAI
Backstage TechDocs deployments are vulnerable to code execution through documentation configuration files edited by repository contributors, potentially compromising CI/CD build infrastructure. The technical severity rating (CVSS 8.8) significantly overstates real-world risk-exploitability remains very low (EPSS 0.02%, no public exploit identified at time of analysis), making this a controlled-priority patch rather than an emergency response. Organizations should coordinate an upgrade across development teams while tightening access controls on repository configuration files.
Apply vendor patch.
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
Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Affected Products (CPE)NVD
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
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
Improper authentication in the Backstage @backstage/plugin-auth-backend-module-oidc-provider package prior to 0.4.20 let
GHSA-6jr7-99pf-8vgf
NVD
CVE.org
EPSS
VulDB
Exploit-DB