CVE-2026-29186: @backstage/plugin-techdocs-node: TechDocs Mkdocs Configuration Key Enables Arbitrary Code Execution
Impact This is a configuration bypass vulnerability that enables arbitrary code execution. The @backstage/plugin-techdocs-node package uses an allowlist to filter dangerous MkDocs configuration keys during the documentation build process.
A gap in this allowlist allows attackers to craft an mkdocs.yml that causes arbitrary Python code execution, completely bypassing TechDocs' security controls.
Patches
Patched in @backstage/plugin-techdocs-node version 1.14.3
Workarounds If users cannot upgrade immediately:
1. Use Docker mode with restricted access: Configure TechDocs with runIn: docker instead of runIn: local. This provides container isolation, though it does not fully mitigate the risk. 2. Restrict repository access: Limit who can modify mkdocs.yml files in repositories that TechDocs processes. Only allow trusted contributors. 3. Manual review: Implement PR review requirements for changes to mkdocs.yml files to detect malicious hooks configurations before they are merged. 4. Downgrade MkDocs: Use MkDocs < 1.4.0 (e.g., 1.3.1) which does not support hooks. Note: This may limit access to newer MkDocs features.
Note: 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.
Resources MkDocs Hooks Documentation MkDocs 1.4 Release Notes TechDocs Architecture
Other sources
Backstage is an open framework for building developer portals. Prior to version 1.14.3, this is a configuration bypass vulnerability that enables arbitrary code execution. The @backstage/plugin-techdocs-node package uses an allowlist to filter dangerous MkDocs configuration keys during the documentation build process. A gap in this allowlist allows attackers to craft an mkdocs.yml that causes arbitrary Python code execution, completely bypassing TechDocs' security controls. This issue has been patched in version 1.14.3.
— MITRE
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
npm/@backstage/plugin-techdocs-nodeto a version that resolves this vulnerability.Fixed in 1.14.3 - Upgrade
Upgrade
@backstage/plugin-techdocs-nodeto a version that resolves this vulnerability.Fixed in 1.14.3 - Configuration
Configure TechDocs with `runIn: docker` instead of `runIn: local` to get container isolation (not a full mitigation).
TechDocs (runIn setting for @techdocs/cli / TechDocs build) runIn = docker - Configuration
If you cannot upgrade TechDocs, use MkDocs < 1.4.0 (e.g., 1.3.1) because versions < 1.4.0 do not support hooks that enable the arbitrary code execution via crafted `mkdocs.yml`.
MkDocs hooks support = disable by using MkDocs < 1.4.0 - Compensating control
Implement PR review requirements for changes to `mkdocs.yml` files to detect malicious hooks configurations before they are merged.
- Compensating control
Restrict repository access by limiting who can modify `mkdocs.yml` files in repositories that TechDocs processes (allow only trusted contributors).
Event History
Frequently Asked Questions
What is the severity of CVE-2026-29186?
CVE-2026-29186 has a critical severity rating due to its potential for arbitrary code execution.
How do I fix CVE-2026-29186?
To fix CVE-2026-29186, upgrade the @backstage/plugin-techdocs-node package to version 1.14.3 or later.
Which versions of @backstage/plugin-techdocs-node are affected by CVE-2026-29186?
CVE-2026-29186 affects versions of @backstage/plugin-techdocs-node up to and including 1.14.2.
What impact can exploiting CVE-2026-29186 have on my application?
Exploiting CVE-2026-29186 can lead to arbitrary code execution, allowing attackers to execute harmful code within the application.
Is there a known workaround for CVE-2026-29186 until I can update?
There is no known workaround for CVE-2026-29186; upgrading to a patched version is recommended.