Backstage has improper input validation in TechDocs Markdown extension configuration
### Impact An authenticated user who can register or modify documentation sources may cause a TechDocs build to access resources outside the intended documentation boundary. Depending on deployment configuration, this may expose sensitive backend-host data or internal network resources. ### Patches Patched in `@backstage/plugin-techdocs-node` version `1.15.4`. Adopters must also use `pymdown-extensions` version `10.21.3` or newer, normally through `mkdocs-techdocs-core` version `1.7.0` or newer. `@backstage/plugin-techdocs-node` does not control the Python dependencies used by the generator; with an older PyMdown release, snippets may remain vulnerable to file inclusion even after their configuration is sanitized. ### Workarounds - Generate TechDocs only from trusted repositories with reviewed MkDocs configuration. - Use isolated build environments with restricted filesystem access and network egress. - Prefer externally generated TechDocs with appropriately sandboxed CI.
- Products
- @backstage/plugin-techdocs-node
- Affected versions
- Not specified
- Fixed versions
- 1.15.4
- CVEs
- CVE-2026-106557
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 28 Oct 2026, 05:11 UTC · Revision 1
Source evidence
Backstage has improper input validation in TechDocs Markdown extension configuration
core-osv · Original sourcePublished 7 Oct 2026, 16:22 UTC
### Impact An authenticated user who can register or modify documentation sources may cause a TechDocs build to access resources outside the intended documentation boundary. Depending on deployment configuration, this may expose sensitive backend-host data or internal network resources. ### Patches Patched in `@backstage/plugin-techdocs-node` version `1.15.4`. Adopters must also use `pymdown-extensions` version `10.21.3` or newer, normally through `mkdocs-techdocs-core` version `1.7.0` or newer. `@backstage/plugin-techdocs-node` does not control the Python dependencies used by the generator; with an older PyMdown release, snippets may remain vulnerable to file inclusion even after their configuration is sanitized. ### Workarounds - Generate TechDocs only from trusted repositories with reviewed MkDocs configuration. - Use isolated build environments with restricted filesystem access and network egress. - Prefer externally generated TechDocs with appropriately sandboxed CI.
osv:GHSA-f7v3-xhm6-w245
@backstage/plugin-techdocs-node
Fixed versions: 1.15.4
Complete source record
{
"id": "4e800500ad94e2e7a3045eec5ef7b1c49180d10333c7c29d58237f1284794e47",
"url": "https://osv.dev/vulnerability/GHSA-f7v3-xhm6-w245",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Backstage has improper input validation in TechDocs Markdown extension configuration",
"summary": "### Impact An authenticated user who can register or modify documentation sources may cause a TechDocs build to access resources outside the intended documentation boundary. Depending on deployment configuration, this may expose sensitive backend-host data or internal network resources. ### Patches Patched in `@backstage/plugin-techdocs-node` version `1.15.4`. Adopters must also use `pymdown-extensions` version `10.21.3` or newer, normally through `mkdocs-techdocs-core` version `1.7.0` or newer. `@backstage/plugin-techdocs-node` does not control the Python dependencies used by the generator; with an older PyMdown release, snippets may remain vulnerable to file inclusion even after their configuration is sanitized. ### Workarounds - Generate TechDocs only from trusted repositories with reviewed MkDocs configuration. - Use isolated build environments with restricted filesystem access and network egress. - Prefer externally generated TechDocs with appropriately sandboxed CI.",
"evidence": "osv:GHSA-f7v3-xhm6-w245",
"products": [
{
"name": {
"value": "@backstage/plugin-techdocs-node",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "1.15.4",
"evidence": "/affected/0/ranges"
}
],
"affected_versions": []
}
],
"severity": "high",
"structured": {
"id": "GHSA-f7v3-xhm6-w245",
"aliases": [
"CVE-2026-106557",
"GHSA-f7v3-xhm6-w245"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N"
}
],
"affected": [
{
"ranges": [
{
"type": "SEMVER",
"events": [
{
"introduced": "0"
},
{
"fixed": "1.15.4"
}
]
}
],
"package": {
"name": "@backstage/plugin-techdocs-node",
"purl": "pkg:npm/%40backstage/plugin-techdocs-node",
"ecosystem": "npm"
},
"database_specific": {
"source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-f7v3-xhm6-w245/GHSA-f7v3-xhm6-w245.json"
}
}
],
"modified": "2026-10-07T16:30:06.348764958Z",
"provider": "osv",
"references": [
"https://github.com/backstage/backstage/security/advisories/GHSA-f7v3-xhm6-w245",
"https://github.com/backstage/backstage/commit/017ace52d9b327ededc6704cf17799c875ae0f29",
"https://github.com/backstage/backstage/commit/2d9de4ca117a529de4b6ed7dfb7aa507ca7b3f91",
"https://github.com/backstage/backstage",
"https://github.com/backstage/backstage/releases/tag/v1.50.5",
"https://github.com/backstage/backstage/releases/tag/v1.54.6"
],
"provider_metadata": {
"cwe_ids": [
"CWE-22",
"CWE-918"
],
"severity": "HIGH",
"github_reviewed": true,
"nvd_published_at": null,
"github_reviewed_at": "2026-10-07T16:22:58Z"
}
},
"related_cves": [
{
"value": "CVE-2026-106557",
"evidence": "/aliases"
}
],
"security_relevant": true,
"severity_evidence": "/database_specific/severity"
},
"source_id": "core-osv",
"document_id": 95167,
"published_at": "2026-10-07T16:22:58+00:00"
}