@backstage/plugin-techdocs-node
Supply chain provenance
Status for the latest visible version.
Without SLSA provenance there is no cryptographic link between this tarball and the public source, so a manually published version cannot be tied back to a reviewed commit.
Maintainers
Keywords
Accepted risks
Findings the reviewer chose to accept rather than block on.
| Source | Rule | Reason | Accepted by | When |
|---|---|---|---|---|
| phantom-deps | phantom-dep:mock-fs | AI (phantom-deps): mock-fs is a test-mocking lib; benign phantom for this package. | ai | |
| dependencies | unvetted-dep:@backstage/backend-plugin-api | AI (dependencies): Core Backstage framework package; expected dependency for any Backstage backend plugin/library. | ai | |
| dependencies | unvetted-dep:@backstage/plugin-search-common | AI (dependencies): Core Backstage search package; expected for TechDocs search indexing functionality. | ai | |
| dependencies | unvetted-dep:@trendyol-js/openstack-swift-sdk | AI (dependencies): OpenStack Swift SDK for object storage; expected for TechDocs cloud storage backend support. | ai | |
| dependencies | unvetted-dep:dockerode | AI (dependencies): dockerode is a legitimate Docker API client; expected dependency for TechDocs node library which supports Docker-based MkDocs builds. | ai | |
| phantom-deps | phantom-dep:@aws-sdk/types | AI (phantom-deps): AWS SDK types package used by convention alongside AWS SDK client packages; benign phantom dep for this package. | ai | |
| phantom-deps | phantom-dep:@types/express | AI (phantom-deps): TypeScript type definitions for express; commonly declared as a direct dep in TypeScript projects even when not directly imported. | ai | |
| dependencies | unvetted-dep:@backstage/plugin-techdocs-common | AI (dependencies): Core Backstage TechDocs shared package; expected sibling dependency in the TechDocs plugin family. | ai |
Versions (showing 7 of 7)
| Version | Deps | Published |
|---|---|---|
| 1.15.2 | 29 / 9 | |
| 1.15.1 | 29 / 9 | |
| 1.15.0 | 29 / 9 | |
| 1.14.5 | 29 / 9 | |
| 1.14.4 | 29 / 9 | |
| 1.14.3 | 29 / 9 | |
| 1.7.2 | 28 / 9 |
v1.15.2
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v1.14.5
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v1.14.4
1 findingPackage was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.
v1.14.3
1 findingPackage was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v1.7.2
4 findings[Reject — re-review on republish] (prior reject: AI (osv): HIGH severity arbitrary code execution; fixed in 1.13.11/1.14.1. Affects all versions < 1.13.11.) CVSS 7.7 (HIGH) — CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:L/A:L ### Impact 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. ### Patches Upgrade to `@backstage/plugin-techdocs-node` version 1.13.11, 1.14.1 or later. 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. **Note**: Users of `@techdocs/cli` should also upgrade to the latest version, which includes the fixed `@backstage/plugin-techdocs-node` dependency. ### Workarounds If you 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. ### References [MkDocs Hooks Documentation](https://www.mkdocs.org/user-guide/configuration/#hooks) [MkDocs 1.4 Release Notes](https://www.mkdocs.org/about/release-notes/#version-14-2022-09-27) [TechDocs Architecture](https://backstage.io/docs/features/techdocs/architecture)
[Reject — re-review on republish] (prior reject: AI (osv): HIGH severity config bypass enabling arbitrary code execution; fixed in 1.14.3. Affects all versions < 1.14.3.) CVSS 7.7 (HIGH) — CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:L/A:L ### 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](https://www.mkdocs.org/user-guide/configuration/#hooks) [MkDocs 1.4 Release Notes](https://www.mkdocs.org/about/release-notes/#version-14-2022-09-27) [TechDocs Architecture](https://backstage.io/docs/features/techdocs/architecture)
[Reject — re-review on republish] (prior reject: AI (osv): MODERATE path traversal vulnerability; fixed in 1.13.11/1.14.1. Affects all versions < 1.13.11.) CVSS 5.3 (MEDIUM) — CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N ### Impact A path traversal vulnerability in the TechDocs local generator allows attackers to read arbitrary files from the host filesystem when Backstage is configured with `techdocs.generator.runIn: local`. When processing documentation from untrusted sources, symlinks within the docs directory are followed by MkDocs during the build process. File contents are embedded into generated HTML and exposed to users who can view the documentation. ### Patches This vulnerability is fixed in` @backstage/plugin-techdocs-node` version X.X.X. Users should upgrade to this version or later. ### Workarounds - Switch to `runIn: docker` in your `app-config.yaml`: ```yaml techdocs: generator: runIn: docker ``` - Restrict write access to TechDocs source repositories to trusted users only ### References - https://backstage.io/docs/features/techdocs/configuration
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.