GHSA-27mw-82g8-phjj
SvelteKit : XSS via untrusted cache-control header in prerendered page
Packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| npm | @sveltejs/kit | < 3.0.0 | 3.0.0 |
Details
As written in the advisory (Markdown source, shown as plain text).
### Impact
Applications that prerender pages and use `setHeaders` to set a `cache-control` header from an untrusted source are vulnerable to cross-site scripting (XSS).
SvelteKit inserts the header value into a `<meta http-equiv="cache-control">` tag without escaping it. An attacker who can influence this value at prerender time can break out of the `content` attribute and inject HTML or JavaScript into the generated page. The injected code can then execute when users visit the page.
### Patches
The fix escapes the header value before inserting it into the generated HTML. Upgrade to `@sveltejs/kit` version 3.0.0 or later.
### Workarounds
Avoid forwarding untrusted `cache-control` header values with `setHeaders` on prerendered pages. Use a fixed, trusted cache policy instead.
References
External links from the advisory. They lead to third-party sites.
- https://github.com/sveltejs/kit/security/advisories/GHSA-27mw-82g8-phjj
- https://nvd.nist.gov/vuln/detail/CVE-2026-114061
- https://github.com/sveltejs/kit/commit/d9d55b579743c80ee7cb59c272d864fd9253dae7
- https://github.com/sveltejs/kit
- https://github.com/sveltejs/kit/releases/tag/@sveltejs/[email protected]
- https://www.vulncheck.com/advisories/sveltekit-before-3.0.0-xss-via-cache-control-header-in-prerendered-pages