Skip to main content

Backstage TechDocs CVE-2026-25153

HIGH
Code Injection (CWE-94)
2026-01-30 security-advisories@github.com GHSA-6jr7-99pf-8vgf
8.8
CVSS 3.1 · NVD
Share

Severity by source

NVD PRIMARY
8.8 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
8.8 HIGH

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.

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

Primary rating from NVD.

CVSS VectorNVD

CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

10
Analysis Updated
Jun 30, 2026 - 05:55 vuln.today
v5 (cvss_changed)
Analysis Updated
Jun 30, 2026 - 05:53 vuln.today
v4 (cvss_changed)
Source Code Evidence Fetched
Jun 30, 2026 - 05:52 vuln.today
Analysis Updated
Jun 30, 2026 - 05:52 vuln.today
v3 (cvss_changed)
Analysis Updated
Jun 30, 2026 - 05:51 vuln.today
v2 (cvss_changed)
Re-analysis Queued
Jun 30, 2026 - 03:23 vuln.today
cvss_changed
CVSS changed
Jun 30, 2026 - 03:23 NVD
7.7 (HIGH) 8.8 (HIGH)
Patch released
Mar 31, 2026 - 21:13 nvd
Patch available
Analysis Generated
Mar 12, 2026 - 22:00 vuln.today
CVE Published
Jan 30, 2026 - 22:15 nvd
HIGH 7.7

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 2 npm packages depend on @backstage/plugin-techdocs-node (2 direct, 0 indirect)

Ecosystem-wide dependent count for version 1.14.0.

DescriptionNVD

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.

AnalysisAI

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.

Technical ContextAI

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.

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.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2026-55255 HIGH POC
8.4 Jun 19

Cross-user flow execution in Langflow (< 1.9.1) lets any authenticated API-key holder run another user's flow by passing

Vendor StatusVendor

Share

CVE-2026-25153 vulnerability details – vuln.today

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