CVE-2025-65019CVE-2025-65019是Astro框架中的一个中等严重性跨站脚本(XSS)漏洞。该漏洞存在于Astro的Cloudflare适配器(@astrojs/cloudflare)中,当使用output: 'server'模式时,图片优化端点(/_image)存在严重的安全缺陷。具体问题在于isRemoteAllowed()函数无条件地允许data:协议URL,这使得攻击者可以通过构造恶意的SVG负载绕过域限制和内容安全策略(CSP)保护,从而执行任意JavaScript代码。此漏洞影响所有使用Astro框架并部署在Cloudflare环境中的Web应用程序,可能导致用户会话劫持、敏感数据窃取、钓鱼攻击等安全问题。由于该漏洞需要用户交互才能触发,攻击场景通常涉及诱骗用户访问特制页面。该漏洞已在Astro 5.15.9版本中得到修复,建议所有受影响用户立即升级。
该漏洞的核心问题在于Astro框架的Cloudflare适配器中图片优化端点的输入验证机制存在缺陷。当在Cloudflare环境中使用Astro的服务器端渲染(SSR)模式时,/_image端点负责处理图片优化请求。isRemoteAllowed()函数本应限制只能加载特定白名单域的图片资源,但由于实现错误,该函数无条件地允许了data:协议URL。data:协议允许将小数据块直接嵌入到URL中,攻击者可以利用这一特性将恶意SVG内容编码为data:URL。SVG格式支持<script>标签和事件处理器(如onload),当浏览器解析包含恶意脚本的SVG文件时,会执行其中的JavaScript代码。由于Astro的SSR模式在服务端处理图片优化请求,攻击者可以通过向/_image端点发送包含恶意data:URL的请求来触发服务端或客户端的脚本执行。攻击者可以构造形如data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'><script>alert(document.cookie)</script></svg>的payload,通过img标签的src属性引用该URL,从而在用户访问时执行XSS攻击。