{"schemaVersion":3,"id":"CVE-2026-106455","aliases":["GHSA-q38j-6vcm-2f5m"],"status":"published","duplicateOf":null,"title":null,"description":"Backstage is an open framework for building developer portals. From 0.11.12 until 1.14.7 and 1.15.5, the @backstage/plugin-techdocs-node package is affected by improper validation of mkdocs plugin configuration in techdocs. An authenticated attacker with control over a TechDocs source repository could cause a documentation build to retrieve and publish data from network locations reachable by the build environment. Exposure depends on deployment topology, build mode, and target endpoint protections. Modern cloud metadata services that require tokens or special headers are not directly accessible through the affected behavior. This issue is fixed in @backstage/plugin-techdocs-node versions 1.14.7 and 1.15.5.","dates":{"published":"2026-10-06T20:06:06.505Z","modified":"2026-10-09T01:46:59.251Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":7.7,"severity":"high","version":"3.1","versionLabel":"v3.1","source":"CVE.org","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N","computed":false,"selection":"backend-summary"},"metrics":[{"version":"3.1","versionLabel":"v3.1","source":"CVE.org","score":7.7,"severity":"high","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"OSV · Npm","score":7.7,"severity":"high","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N","exploitability":7.9,"impact":6.7,"computed":true},{"version":"3.1","versionLabel":"v3.1","source":"NVD","score":7.7,"severity":"high","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.00332,"percentile":0.24999,"severity":"low","asOf":"2026-10-19T00:00:00.000Z","change":{"pp":null,"baselineDate":null,"baselineScore":null},"history":[{"date":"2026-10-07T00:00:00.000Z","score":0.00332,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00332,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00332,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00332,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00332,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00332,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00332,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00332,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00332,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00332,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00332,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00332,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00332,"percentile":0.24999}],"last30":[{"date":"2026-10-07T00:00:00.000Z","score":0.00332,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00332,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00332,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00332,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00332,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00332,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00332,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00332,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00332,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00332,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00332,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00332,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00332,"percentile":0.24999}]},"kev":{"state":"not-listed","entries":[],"listedCount":0,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":false,"entry":null},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[],"exploitCount":0,"weaknesses":[{"id":"CWE-918","name":"Server-Side Request Forgery (SSRF)","description":"The web server receives a URL or similar request from an upstream component and retrieves the contents of this URL, but it does not sufficiently ensure that the request is being sent to the expected destination.","type":"weakness","status":"Incomplete","abstraction":"Base","likelihoodOfExploit":null,"url":"https://cwe.mitre.org/data/definitions/918.html"}],"affected":[{"vendor":"backstage","product":"backstage","name":"backstage","label":"backstage","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"≥ 0.71.1, < 1.50.6","noFixRecorded":false,"fixedIn":null},{"text":"≥ 1.51.0-next.0, < 1.54.8","noFixRecorded":false,"fixedIn":null}],"versionsText":"≥ 0.71.1, < 1.50.6 | ≥ 1.51.0-next.0, < 1.54.8","eol":null,"hubHref":"/vendor/backstage/backstage"},{"vendor":"@backstage","product":"plugin-techdocs-node","name":"plugin-techdocs-node","label":"plugin-techdocs-node","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"≥ 0.11.12, < 1.14.7","noFixRecorded":false,"fixedIn":null},{"text":"≥ 1.15.0, < 1.15.5","noFixRecorded":false,"fixedIn":null}],"versionsText":"≥ 0.11.12, < 1.14.7 | ≥ 1.15.0, < 1.15.5","eol":null,"hubHref":"/vendor/backstage/plugin-techdocs-node"},{"vendor":"linuxfoundation","product":"backstage","name":"backstage","label":"backstage","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"≥ 0.71.1, < 1.50.6","noFixRecorded":false,"fixedIn":null},{"text":"≥ 1.51.1, < 1.54.8","noFixRecorded":false,"fixedIn":null},{"text":"1.51.0","noFixRecorded":false,"fixedIn":null},{"text":"1.51.0:next0","noFixRecorded":false,"fixedIn":null},{"text":"1.51.0:next1","noFixRecorded":false,"fixedIn":null},{"text":"1.51.0:next2","noFixRecorded":false,"fixedIn":null},{"text":"1.51.0:next3","noFixRecorded":false,"fixedIn":null}],"versionsText":"≥ 0.71.1, < 1.50.6 | ≥ 1.51.1, < 1.54.8 | 1.51.0 | 1.51.0:next0 | 1.51.0:next1 | 1.51.0:next2 | 1.51.0:next3","eol":null,"hubHref":"/vendor/linuxfoundation/backstage"},{"vendor":"linuxfoundation","product":"backstage_plugin-techdocs-node","name":"backstage plugin-techdocs-node","label":"backstage_plugin-techdocs-node","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"≥ 0.11.12, < 1.14.7","noFixRecorded":false,"fixedIn":null},{"text":"≥ 1.15.0, < 1.15.5","noFixRecorded":false,"fixedIn":null}],"versionsText":"≥ 0.11.12, < 1.14.7 | ≥ 1.15.0, < 1.15.5","eol":null,"hubHref":"/vendor/linuxfoundation/backstage_plugin-techdocs-node"},{"vendor":"@backstage","product":"plugin-techdocs-node","name":"@backstage/plugin-techdocs-node","label":"plugin-techdocs-node","ecosystem":"Npm","cpePart":null,"purl":"pkg:npm/@backstage/plugin-techdocs-node","purlType":"npm","versions":[{"text":"≥ 0.11.12, < 1.14.7","noFixRecorded":false,"fixedIn":null},{"text":"≥ 1.15.0, < 1.15.5","noFixRecorded":false,"fixedIn":null}],"versionsText":"≥ 0.11.12, < 1.14.7 | ≥ 1.15.0, < 1.15.5","eol":null,"hubHref":null}],"affectedCount":5,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://github.com/backstage/backstage/security/advisories/GHSA-q38j-6vcm-2f5m","label":"github.com/backstage/backstage/security/advisories/GHSA-q38j-6vcm-2f5m","hostname":"github.com","tags":["X Refsource CONFIRM","WEB","Mitigation","Vendor Advisory"]},{"url":"https://github.com/backstage/backstage/commit/28aa82ae2815988721dd7bbf43cd69c431dcd71b","label":"github.com/backstage/backstage/commit/28aa82ae2815988721dd7bbf43cd69c431dcd71b","hostname":"github.com","tags":["X Refsource MISC","WEB","Patch"]},{"url":"https://github.com/backstage/backstage/commit/9f76ea445088961f68c364764cc4b7734f368fc0","label":"github.com/backstage/backstage/commit/9f76ea445088961f68c364764cc4b7734f368fc0","hostname":"github.com","tags":["X Refsource MISC","WEB","Patch"]},{"url":"https://github.com/backstage/backstage/releases/tag/v1.50.6","label":"github.com/backstage/backstage/releases/tag/v1.50.6","hostname":"github.com","tags":["X Refsource MISC","WEB","Patch","Release Notes"]},{"url":"https://github.com/backstage/backstage/releases/tag/v1.54.8","label":"github.com/backstage/backstage/releases/tag/v1.54.8","hostname":"github.com","tags":["X Refsource MISC","WEB","Patch","Release Notes"]},{"url":"https://github.com/backstage/backstage/releases/tag/v1.55.0","label":"github.com/backstage/backstage/releases/tag/v1.55.0","hostname":"github.com","tags":["X Refsource MISC","WEB","Release Notes","Vendor Advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-106455","label":"nvd.nist.gov/vuln/detail/CVE-2026-106455","hostname":"nvd.nist.gov","tags":["Advisory"]},{"url":"https://github.com/backstage/backstage","label":"github.com/backstage/backstage","hostname":"github.com","tags":["PACKAGE"]}],"lineage":{"upstream":[],"downstream":[],"duplicates":[],"related":[]},"timeline":[{"kind":"published","date":"2026-10-06T20:06:06.505Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-10-09T01:46:59.251Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":31,"level":"medium","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-20T02:49:38.246Z","stale":false,"partial":false}}