{"id":"GHSA-q2x5-4xjx-c6p9","summary":"Backstage has a Possible SSRF when reading from allowed URL's in `backend.reading.allow`","details":"### Impact\n\nThe `FetchUrlReader` component, used by the catalog and other plugins to fetch content from URLs, followed HTTP redirects automatically. This allowed an attacker who controls a host listed in `backend.reading.allow` to redirect requests to internal or sensitive URLs that are not on the allowlist, bypassing the URL allowlist security control.\n\nThis is a Server-Side Request Forgery (SSRF) vulnerability that could allow access to internal resources, but it does not allow attackers to include additional request headers.\n\n### Patches\n\nThis vulnerability is fixed in `@backstage/backend-defaults` version 0.12.2, 0.13.2, 0.14.1, and 0.15.0. Users should upgrade to this version or later.\n\n### Workarounds\n\n- Restrict `backend.reading.allow` to only trusted hosts that you control and that do not issue redirects\n- Ensure allowed hosts do not have open redirect vulnerabilities\n- Use network-level controls to block access from Backstage to sensitive internal endpoints\n\n### References\n\n- [OWASP SSRF Prevention Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Server_Side_Request_Forgery_Prevention_Cheat_Sheet.html)","aliases":["CVE-2026-24048"],"modified":"2026-02-03T03:10:27.142022Z","published":"2026-01-21T22:49:37Z","database_specific":{"cwe_ids":["CWE-918"],"severity":"LOW","github_reviewed":true,"github_reviewed_at":"2026-01-21T22:49:37Z","nvd_published_at":"2026-01-21T23:15:53Z"},"references":[{"type":"WEB","url":"https://github.com/backstage/backstage/security/advisories/GHSA-q2x5-4xjx-c6p9"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-24048"},{"type":"WEB","url":"https://github.com/backstage/backstage/commit/27f9061d24affd1b9212fe0abd476bfc3fbaedcb"},{"type":"PACKAGE","url":"https://github.com/backstage/backstage"}],"affected":[{"package":{"name":"@backstage/backend-defaults","ecosystem":"npm","purl":"pkg:npm/%40backstage/backend-defaults"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"0.12.2"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/01/GHSA-q2x5-4xjx-c6p9/GHSA-q2x5-4xjx-c6p9.json"}},{"package":{"name":"@backstage/backend-defaults","ecosystem":"npm","purl":"pkg:npm/%40backstage/backend-defaults"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0.13.0"},{"fixed":"0.13.2"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/01/GHSA-q2x5-4xjx-c6p9/GHSA-q2x5-4xjx-c6p9.json"}},{"package":{"name":"@backstage/backend-defaults","ecosystem":"npm","purl":"pkg:npm/%40backstage/backend-defaults"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0.14.0"},{"fixed":"0.14.1"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/01/GHSA-q2x5-4xjx-c6p9/GHSA-q2x5-4xjx-c6p9.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:L/I:N/A:N"}]}