{"schemaVersion":3,"id":"CVE-2026-106496","aliases":["GHSA-pcmq-25r3-5w9v"],"status":"published","duplicateOf":null,"title":null,"description":"Backstage is an open framework for building developer portals. Prior to 3.9.1, the @backstage/plugin-catalog-backend package is affected by inconsistent enforcement of allowed location types during catalog processing. Under certain configurations, the catalog backend could process location types that were not intended to be allowed, potentially leading to unintended file access on the backend host. This issue is fixed in version 3.9.1.","dates":{"published":"2026-10-06T21:17:11.966Z","modified":"2026-10-07T17:06:48.520Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":6.5,"severity":"medium","version":"3.1","versionLabel":"v3.1","source":"NVD","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N","computed":false,"selection":"backend-summary"},"metrics":[{"version":"3.1","versionLabel":"v3.1","source":"CVE.org","score":3.1,"severity":"low","vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"OSV · Npm","score":3.1,"severity":"low","vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N","exploitability":4.1,"impact":2.3,"computed":true},{"version":"3.1","versionLabel":"v3.1","source":"NVD","score":6.5,"severity":"medium","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.00244,"percentile":0.14575,"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.00211,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00211,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00211,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00211,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00211,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00211,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00211,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00211,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00211,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00211,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00244,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00244,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00244,"percentile":0.14575}],"last30":[{"date":"2026-10-07T00:00:00.000Z","score":0.00211,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00211,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00211,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00211,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00211,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00211,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00211,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00211,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00211,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00211,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00244,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00244,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00244,"percentile":0.14575}]},"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"},{"id":"CWE-863","name":"Incorrect Authorization","description":"The product performs an authorization check when an actor attempts to access a resource or perform an action, but it does not correctly perform the check.","type":"weakness","status":"Incomplete","abstraction":"Class","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/863.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-catalog-backend","name":"plugin-catalog-backend","label":"plugin-catalog-backend","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 3.9.1","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 3.9.1","eol":null,"hubHref":"/vendor/backstage/plugin-catalog-backend"},{"vendor":"linuxfoundation","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/linuxfoundation/backstage"},{"vendor":"linuxfoundation","product":"backstage_plugin-catalog-backend","name":"backstage plugin-catalog-backend","label":"backstage_plugin-catalog-backend","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 3.9.1","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 3.9.1","eol":null,"hubHref":"/vendor/linuxfoundation/backstage_plugin-catalog-backend"},{"vendor":"@backstage","product":"plugin-catalog-backend","name":"@backstage/plugin-catalog-backend","label":"plugin-catalog-backend","ecosystem":"Npm","cpePart":null,"purl":"pkg:npm/@backstage/plugin-catalog-backend","purlType":"npm","versions":[{"text":"< 3.9.1","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 3.9.1","eol":null,"hubHref":null}],"affectedCount":5,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://github.com/backstage/backstage/security/advisories/GHSA-pcmq-25r3-5w9v","label":"github.com/backstage/backstage/security/advisories/GHSA-pcmq-25r3-5w9v","hostname":"github.com","tags":["X Refsource CONFIRM","WEB","Vendor Advisory"]},{"url":"https://github.com/backstage/backstage/commit/23774b61560d851bc69cd6a77d12561b24d11afd","label":"github.com/backstage/backstage/commit/23774b61560d851bc69cd6a77d12561b24d11afd","hostname":"github.com","tags":["X Refsource MISC","WEB","Patch"]},{"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","Release Notes"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-106496","label":"nvd.nist.gov/vuln/detail/CVE-2026-106496","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-06T21:17:11.966Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-10-07T17:06:48.520Z","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-20T07:29:57.575Z","stale":false,"partial":false}}