{"id":"CVE-2026-106562","aliases":["EUVD-2026-94375","GHSA-9325-vq29-gp3v"],"status":"published","title":"Backstage: Incorrect authorization in search engine permission filtering","description":"Backstage is an open framework for building developer portals. Prior to 2.1.6 in @backstage/plugin-search-backend and 1.8.7 in @backstage/plugin-search-backend-module-elasticsearch, search engine permission filtering could return documents denied by policy. An authenticated Backstage user subject to a DENY policy for search document types could receive unauthorized results in deployments with permission.enabled set to true and an Elasticsearch or OpenSearch backend. This issue is fixed in @backstage/plugin-search-backend 2.1.6 and @backstage/plugin-search-backend-module-elasticsearch 1.8.7.","severity":{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-11","score":0.00197,"percentile":0.09541,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-754","CWE-863"],"published":"2026-10-07T14:54:13Z","modified":"2026-10-28T02:31:05Z","fixes":[{"ecosystem":"npm","package":"@backstage/plugin-search-backend","fixed_in":["2.1.6"],"sources":["ghsa","osv"]},{"ecosystem":"npm","package":"@backstage/plugin-search-backend-module-elasticsearch","fixed_in":["1.8.7"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"npm","package":"@backstage/plugin-search-backend","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.1.6"}]}]},{"source":"ghsa","ecosystem":"npm","package":"@backstage/plugin-search-backend-module-elasticsearch","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.8.7"}]}]},{"source":"osv","ecosystem":"npm","package":"@backstage/plugin-search-backend","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"2.1.6"}]}]},{"source":"osv","ecosystem":"npm","package":"@backstage/plugin-search-backend-module-elasticsearch","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.8.7"}]}]}],"products":[{"vendor":"@backstage","product":"plugin-search-backend"},{"vendor":"@backstage","product":"plugin-search-backend-module-elasticsearch"},{"vendor":"backstage","product":"backstage"},{"vendor":"linuxfoundation","product":"backstage"},{"vendor":"linuxfoundation","product":"backstage\\/plugin-search-backend"},{"vendor":"linuxfoundation","product":"backstage\\/plugin-search-backend-module-elasticsearch"}],"references":[{"url":"https://github.com/backstage/backstage/security/advisories/GHSA-9325-vq29-gp3v","tags":["x_refsource_CONFIRM","Mitigation","Vendor Advisory","advisory","web"]},{"url":"https://github.com/backstage/backstage/commit/2d5d3e77d630455d6d48cfa8f31fd3c126fd6f29","tags":["x_refsource_MISC","Patch","fix","web"]},{"url":"https://github.com/backstage/backstage/releases/tag/v1.54.1","tags":["x_refsource_MISC","Patch","Release Notes","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-106562","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-9325-vq29-gp3v"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/106xxx/CVE-2026-106562.json","tags":["advisory"]},{"url":"https://github.com/backstage/backstage","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-106562","title":"Backstage: Incorrect authorization in search engine permission filtering","description":"Backstage is an open framework for building developer portals. Prior to 2.1.6 in @backstage/plugin-search-backend and 1.8.7 in @backstage/plugin-search-backend-module-elasticsearch, search engine permission filtering could return documents denied by policy. An authenticated Backstage user subject to a DENY policy for search document types could receive unauthorized results in deployments with permission.enabled set to true and an Elasticsearch or OpenSearch backend. This issue is fixed in @backstage/plugin-search-backend 2.1.6 and @backstage/plugin-search-backend-module-elasticsearch 1.8.7.","status":"published","published":"2026-10-07T14:54:13.183Z","modified":"2026-10-07T16:14:59.044Z","cvss":[{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium","assessor":"cna"}],"cwes":["CWE-754","CWE-863"],"updated_at":"2026-11-02T14:20:04.156238Z"}],"euvd":[{"id":"EUVD-2026-94375","description":"Backstage is an open framework for building developer portals. Prior to 2.1.6 in @backstage/plugin-search-backend and 1.8.7 in @backstage/plugin-search-backend-module-elasticsearch, search engine permission filtering could return documents denied by policy. An authenticated Backstage user subject to a DENY policy for search document types could receive unauthorized results in deployments with permission.enabled set to true and an Elasticsearch or OpenSearch backend. This issue is fixed in @backstage/plugin-search-backend 2.1.6 and @backstage/plugin-search-backend-module-elasticsearch 1.8.7.","status":"published","published":"2026-10-07T14:54:13Z","modified":"2026-10-07T16:14:59Z","cvss":[{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium"}],"updated_at":"2026-11-02T17:27:35.164729Z"}],"ghsa":[{"id":"GHSA-9325-vq29-gp3v","title":"Backstage has incorrect authorization in search engine permission filtering","description":"### Impact\n\nAn authenticated Backstage user subject to a `DENY` policy for search document types could receive search results they were not authorized to view. This affects deployments with `permission.enabled: true` and an Elasticsearch or OpenSearch search backend.\n\n### Patches\n\n- Upgrade `@backstage/plugin-search-backend` to 2.1.6\n- Upgrade `@backstage/plugin-search-backend-module-elasticsearch` to 1.8.7\n\n### Workarounds\n\nIf you are unable to upgrade immediately:\n\n- Temporarily modify permission policies to use `CONDITIONAL` decisions with per-result filtering rather than blanket `DENY` for search document types\n- Restrict Elasticsearch/OpenSearch index access at the cluster level so that the search service account can only reach expected Backstage indices, limiting the blast radius if the authorization bypass is triggered.","status":"published","published":"2026-10-07T18:02:52Z","modified":"2026-10-07T18:02:54Z","cvss":[{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium"}],"cwes":["CWE-754","CWE-863"],"updated_at":"2026-11-02T14:41:28.013673Z"}],"nvd":[{"id":"CVE-2026-106562","description":"Backstage is an open framework for building developer portals. Prior to 2.1.6 in @backstage/plugin-search-backend and 1.8.7 in @backstage/plugin-search-backend-module-elasticsearch, search engine permission filtering could return documents denied by policy. An authenticated Backstage user subject to a DENY policy for search document types could receive unauthorized results in deployments with permission.enabled set to true and an Elasticsearch or OpenSearch backend. This issue is fixed in @backstage/plugin-search-backend 2.1.6 and @backstage/plugin-search-backend-module-elasticsearch 1.8.7.","status":"published","published":"2026-10-07T15:17:17.677Z","modified":"2026-10-16T14:53:52.52Z","cvss":[{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium","assessor":"secondary"}],"cwes":["CWE-754","CWE-863"],"updated_at":"2026-11-02T14:12:54.809359Z"}],"osv":[{"id":"CVE-2026-106562","title":"Backstage: Incorrect authorization in search engine permission filtering","description":"Backstage is an open framework for building developer portals. Prior to 2.1.6 in @backstage/plugin-search-backend and 1.8.7 in @backstage/plugin-search-backend-module-elasticsearch, search engine permission filtering could return documents denied by policy. An authenticated Backstage user subject to a DENY policy for search document types could receive unauthorized results in deployments with permission.enabled set to true and an Elasticsearch or OpenSearch backend. This issue is fixed in @backstage/plugin-search-backend 2.1.6 and @backstage/plugin-search-backend-module-elasticsearch 1.8.7.","status":"published","published":"2026-10-07T14:54:13.183Z","modified":"2026-10-28T02:31:05.911735711Z","cvss":[{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium"}],"cwes":["CWE-754","CWE-863"],"updated_at":"2026-11-02T15:44:54.583213Z"},{"id":"GHSA-9325-vq29-gp3v","title":"Backstage has incorrect authorization in search engine permission filtering","description":"### Impact\n\nAn authenticated Backstage user subject to a `DENY` policy for search document types could receive search results they were not authorized to view. This affects deployments with `permission.enabled: true` and an Elasticsearch or OpenSearch search backend.\n\n### Patches\n\n- Upgrade `@backstage/plugin-search-backend` to 2.1.6\n- Upgrade `@backstage/plugin-search-backend-module-elasticsearch` to 1.8.7\n\n### Workarounds\n\nIf you are unable to upgrade immediately:\n\n- Temporarily modify permission policies to use `CONDITIONAL` decisions with per-result filtering rather than blanket `DENY` for search document types\n- Restrict Elasticsearch/OpenSearch index access at the cluster level so that the search service account can only reach expected Backstage indices, limiting the blast radius if the authorization bypass is triggered.","status":"published","published":"2026-10-07T18:02:52Z","modified":"2026-10-07T18:15:11.183397966Z","cvss":[{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium"}],"cwes":["CWE-754","CWE-863"],"updated_at":"2026-11-02T15:46:43.123867Z"}]}}
