{"schemaVersion":3,"id":"CVE-2026-106491","aliases":["GHSA-9ghw-48h5-v2w5"],"status":"published","duplicateOf":null,"title":null,"description":"Backstage is an open framework for building developer portals. Prior to 0.6.17, the @backstage/plugin-proxy-backend package is affected by improper input validation in proxy-backend. An authenticated Backstage user could craft a request URL that causes the proxy-backend to forward the request to a path outside the configured base path on the target server. This is limited to target servers already configured as proxy endpoints and requires Backstage authentication by default. This issue is fixed in version 0.6.17.","dates":{"published":"2026-10-06T20:45:08.067Z","modified":"2026-10-07T17:52:11.914Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":6.4,"severity":"medium","version":"3.1","versionLabel":"v3.1","source":"CVE.org","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N","computed":false,"selection":"backend-summary"},"metrics":[{"version":"3.1","versionLabel":"v3.1","source":"CVE.org","score":6.4,"severity":"medium","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"OSV · Npm","score":6.4,"severity":"medium","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N","exploitability":7.9,"impact":4.5,"computed":true},{"version":"3.1","versionLabel":"v3.1","source":"NVD","score":6.4,"severity":"medium","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.00268,"percentile":0.1782,"severity":"low","asOf":"2026-10-20T00:00:00.000Z","change":{"pp":null,"baselineDate":null,"baselineScore":null},"history":[{"date":"2026-10-07T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.00268,"percentile":0.1782}],"last30":[{"date":"2026-10-07T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00268,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.00268,"percentile":0.1782}]},"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-20","name":"Improper Input Validation","description":"The product receives input or data, but it does\n        not validate or incorrectly validates that the input has the\n        properties that are required to process the data safely and\n        correctly.","type":"weakness","status":"Stable","abstraction":"Class","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/20.html"},{"id":"CWE-22","name":"Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')","description":"The product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory.","type":"weakness","status":"Stable","abstraction":"Base","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/22.html"}],"affected":[{"vendor":"backstage","product":"backstage","name":"backstage","label":"backstage","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 1.54.6","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 1.54.6","eol":null,"hubHref":"/vendor/backstage/backstage"},{"vendor":"@backstage","product":"plugin-proxy-backend","name":"plugin-proxy-backend","label":"plugin-proxy-backend","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 0.6.17","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 0.6.17","eol":null,"hubHref":"/vendor/backstage/plugin-proxy-backend"},{"vendor":"@backstage","product":"plugin-proxy-backend","name":"@backstage/plugin-proxy-backend","label":"plugin-proxy-backend","ecosystem":"Npm","cpePart":null,"purl":"pkg:npm/@backstage/plugin-proxy-backend","purlType":"npm","versions":[{"text":"< 0.6.17","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 0.6.17","eol":null,"hubHref":null}],"affectedCount":3,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://github.com/backstage/backstage/security/advisories/GHSA-9ghw-48h5-v2w5","label":"github.com/backstage/backstage/security/advisories/GHSA-9ghw-48h5-v2w5","hostname":"github.com","tags":["X Refsource CONFIRM","WEB"]},{"url":"https://github.com/backstage/backstage/commit/233287d0ce3133e41549bf92a7470c940a41753c","label":"github.com/backstage/backstage/commit/233287d0ce3133e41549bf92a7470c940a41753c","hostname":"github.com","tags":["X Refsource MISC","WEB"]},{"url":"https://github.com/backstage/backstage/releases/tag/v1.54.6","label":"github.com/backstage/backstage/releases/tag/v1.54.6","hostname":"github.com","tags":["X Refsource MISC","WEB"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-106491","label":"nvd.nist.gov/vuln/detail/CVE-2026-106491","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:45:08.067Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-10-07T17:52:11.914Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":26,"level":"medium","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-21T03:40:05.805Z","stale":false,"partial":false}}