{"id":"GHSA-gw32-9rmw-qwww","summary":"svelte is vulnerable to XSS with textarea bind:value","details":"### Summary\n\nA server-side rendered `\u003ctextarea\u003e` with two-way bound value does not have its value correctly escaped in the rendered HTML.\n\n### Details\n\nIn SSR, `\u003ctextarea bind:value={...}\u003e` does not have its value escaped when it is rendered into the HTML as `\u003ctextarea\u003e...\u003c/textarea\u003e`.\n\n### PoC\n\nPut this in a server-side-rendered Svelte component:\n\n```\n\u003cscript\u003e\n  let value = `test'\"\u003e\u003c/textarea\u003e\u003cscript` + `\u003ealert('BIM');\u003c/sc` + `ript\u003e`;\n\u003c/script\u003e\n\n\u003ctextarea bind:value /\u003e\n```\n\n### Impact\n\n- Only affects SSR\n- Needs a `\u003ctextarea bind:value\u003e` filled by user content via two-way binding","modified":"2026-02-03T03:17:01.517258Z","published":"2026-01-16T21:02:56Z","database_specific":{"severity":"HIGH","github_reviewed":true,"github_reviewed_at":"2026-01-16T21:02:56Z","nvd_published_at":null,"cwe_ids":["CWE-79"]},"references":[{"type":"WEB","url":"https://github.com/sveltejs/svelte/security/advisories/GHSA-gw32-9rmw-qwww"},{"type":"WEB","url":"https://github.com/sveltejs/svelte/commit/a31dec5eb30978cff7ff4d77f4bf316841f711bc"},{"type":"PACKAGE","url":"https://github.com/sveltejs/svelte"}],"affected":[{"package":{"name":"svelte","ecosystem":"npm","purl":"pkg:npm/svelte"},"ranges":[{"type":"SEMVER","events":[{"introduced":"3.0.0"},{"fixed":"3.59.2"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/01/GHSA-gw32-9rmw-qwww/GHSA-gw32-9rmw-qwww.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V4","score":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:L/VA:N/SC:H/SI:H/SA:N"}]}