{"schema":"threatline.record/2","record":{"id":"GHSA-prjg-x2qj-wj3g","aliases":["GHSA-prjg-x2qj-wj3g"],"summary":"SSRF via redirects in server-side self-fetch fallbacks","details":"### Impact\r\n\r\nIn certain circumstances, SvelteKit makes server-side fallback requests to URLs derived from the incoming request origin. These self-fetches occur when retrieving prerendered data for experimental `prerender` remote functions, serving rerouted prerendered content, fetching static or prerendered resources without an internal read implementation, and handling same-origin subrequests that cannot be resolved from the server manifest (including during error-page rendering).\r\n\r\nIf an attacker can influence the request origin and trigger one of these fallback paths, SvelteKit can make a request to an attacker-controlled server. These requests previously followed HTTP redirects automatically, allowing that server to redirect the request to an internal service and cause server-side request forgery (SSRF).\r\n\r\nExposure depends on the adapter and deployment configuration. For example, this can occur with `adapter-node` when the request origin is derived from unvalidated `Host` or forwarded host/protocol headers.\r\n\r\n### Patches\r\n\r\nFixed in version 3.0.0.\r\n\r\nThe fix disables automatic redirect following for these framework self-fetch fallbacks. It prevents an attacker-controlled first response from causing further server-side requests through redirects; it does not validate or restrict the origin of the initial request.\r\n\r\n### Workarounds\r\n\r\nConfigure a trusted fixed request origin where supported. For `adapter-node`, set the `paths.origin` configuration to the application’s trusted origin. Alternatively, use a trusted reverse proxy that validates the allowed request hosts and supplies trusted host/protocol metadata. Forwarded headers used to construct the request origin must not be accepted directly from untrusted clients.","categories":["Unclassified"],"product":"@sveltejs/kit","vendor":"","ecosystem":null,"affected_ranges":[{"source":"GitHub Advisory Database","source_url":"https://github.com/sveltejs/kit/security/advisories/GHSA-prjg-x2qj-wj3g","source_modified_at":"2026-10-05T19:34:37Z","fetched_at":"2026-10-25T21:40:15.971031Z","package":{"ecosystem":"npm","name":"@sveltejs/kit"},"range":"< 3.0.0"}],"fixed_versions":[{"source":"GitHub Advisory Database","source_url":"https://github.com/sveltejs/kit/security/advisories/GHSA-prjg-x2qj-wj3g","source_modified_at":"2026-10-05T19:34:37Z","fetched_at":"2026-10-25T21:40:15.971031Z","package":{"ecosystem":"npm","name":"@sveltejs/kit"},"version":"3.0.0"}],"cvss":5.3,"severity":"Medium","kev":{"listed":false},"epss":{"probability":null,"percentile":null,"score_date":null},"published_at":"2026-10-05T19:34:37Z","modified_at":"2026-10-05T19:34:37Z","provenance":[{"source":"GitHub Advisory Database","url":"https://github.com/sveltejs/kit/security/advisories/GHSA-prjg-x2qj-wj3g","fetched_at":"2026-10-25T21:40:15.971031Z","source_modified_at":"2026-10-05T19:34:37Z"}],"sources":["GitHub Advisory Database"],"references":[],"locations":[],"motoko_assessment":{"status":"requires_architecture_review","automatic_remediation":false},"classification":{"method":"product-first software-layer rules","rules_version":"2.1","matched_on":null,"confidence":"unknown","reviewed":false},"change_timestamp":"2026-10-05T19:34:37Z","content_hash":"240f2ed3d5c2854f0be045f651e8c96b33e768bf674e9769583985184c2b233f"}}
