CVE-2025-15265CVE-2025-15265是Svelte框架中的一个服务器端渲染(SSR)XSS漏洞,CVSS评分6.1(中危)。该漏洞存在于Svelte 5.46.0至5.46.3版本中的异步水合(async hydration)功能。当攻击者能够控制传递给hydratable的key参数时,这些未经安全处理的key会被直接嵌入到<script>标签块中,而框架未对其进行HTML安全转义。这意味着攻击者可以通过注入</script>标签来提前终止脚本块,随后注入任意JavaScript代码。由于该漏洞发生在SSR过程中,恶意脚本会在用户浏览器中执行,可能导致严重的会话窃取、账户劫持、敏感数据泄露等安全问题。攻击者无需任何认证即可发起攻击,但需要诱导用户访问特制页面或点击恶意链接,存在一定的用户交互要求。
该漏洞的核心问题在于Svelte框架在处理异步水合时的安全漏洞。在SSR场景中,当使用异步水合功能时,框架需要将一些状态数据序列化到客户端的<script>标签中以便客户端接管状态。问题在于,传递给hydratable的key参数被直接插入到<script>标签内容中,而没有进行HTML实体转义。攻击者可以构造特殊的key值,例如包含</script>字符串的内容,这会导致<script>标签被提前关闭,后续内容将被浏览器解析为JavaScript代码。例如,如果key为</script><script>alert(document.cookie)</script>,最终生成的HTML可能是:<script>__sveltekit.state.key = '</script><script>alert(document.cookie)</script>';</script>。浏览器会解析为两个script标签,第二个script标签内的alert代码将被执行。由于key来自用户可控的数据源,攻击者可以注入任意JavaScript代码,实现远程代码执行。