{"schemaVersion":3,"id":"CVE-2026-29185","aliases":["GHSA-95v5-prp4-5gv5"],"status":"published","duplicateOf":null,"title":null,"description":"Backstage is an open framework for building developer portals. Prior to version 1.20.1, a vulnerability in the SCM URL parsing used by Backstage integrations allowed path traversal sequences in encoded form to be included in file paths. When these URLs were processed by integration functions that construct API URLs, the traversal segments could redirect requests to unintended SCM provider API endpoints using the configured server-side integration credentials. This issue has been patched in version 1.20.1.","dates":{"published":"2026-03-07T15:02:04.986Z","modified":"2026-03-09T20:24:16.756Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":2.7,"severity":"low","version":"3.1","versionLabel":"v3.1","source":"CVE.org","vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:N/A:N","computed":false,"selection":"backend-summary"},"metrics":[{"version":"3.1","versionLabel":"v3.1","source":"CVE.org","score":2.7,"severity":"low","vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:N/A:N","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"OSV · Npm","score":2.7,"severity":"low","vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:N/A:N","exploitability":3.1,"impact":2.3,"computed":true},{"version":"3.1","versionLabel":"v3.1","source":"NVD","score":2.7,"severity":"low","vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:N/A:N","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.00396,"percentile":0.32328,"severity":"low","asOf":"2026-10-20T00:00:00.000Z","change":{"pp":0.047999999999999994,"baselineDate":"2026-09-20T00:00:00.000Z","baselineScore":0.00348},"history":[{"date":"2026-09-14T00:00:00.000Z","score":0.00348,"percentile":null},{"date":"2026-09-15T00:00:00.000Z","score":0.00348,"percentile":null},{"date":"2026-09-16T00:00:00.000Z","score":0.00348,"percentile":null},{"date":"2026-09-17T00:00:00.000Z","score":0.00348,"percentile":null},{"date":"2026-09-18T00:00:00.000Z","score":0.00348,"percentile":null},{"date":"2026-09-19T00:00:00.000Z","score":0.00348,"percentile":null},{"date":"2026-09-20T00:00:00.000Z","score":0.00348,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.00348,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.00348,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.00348,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.00381,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.00381,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.00381,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.00381,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.00381,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.00381,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.00381,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.00381,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00381,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00381,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.00396,"percentile":0.32328}],"last30":[{"date":"2026-09-20T00:00:00.000Z","score":0.00348,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.00348,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.00348,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.00348,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.00381,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.00381,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.00381,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.00381,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.00381,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.00381,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.00381,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.00381,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00381,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00381,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00396,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.00396,"percentile":0.32328}]},"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-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.20.1","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 1.20.1","eol":null,"hubHref":"/vendor/backstage/backstage"},{"vendor":"linuxfoundation","product":"backstage\\/integration","name":"backstage\\/integration","label":"backstage\\/integration","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 1.20.1","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 1.20.1","eol":null,"hubHref":"/vendor/linuxfoundation/backstageintegration"},{"vendor":"@backstage","product":"integration","name":"@backstage/integration","label":"integration","ecosystem":"Npm","cpePart":null,"purl":"pkg:npm/@backstage/integration","purlType":"npm","versions":[{"text":"< 1.20.1","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 1.20.1","eol":null,"hubHref":null}],"affectedCount":3,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://github.com/backstage/backstage/security/advisories/GHSA-95v5-prp4-5gv5","label":"github.com/backstage/backstage/security/advisories/GHSA-95v5-prp4-5gv5","hostname":"github.com","tags":["X Refsource CONFIRM","WEB","Patch","Vendor Advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-29185","label":"nvd.nist.gov/vuln/detail/CVE-2026-29185","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-03-07T15:02:04.986Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-03-09T20:24:16.756Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":11,"level":"low","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-20T19:36:33.130Z","stale":false,"partial":false}}