CVE-2026-41321@astrojs/cloudflare是Astro用于Cloudflare Workers的SSR适配器。在13.1.10版本前,远程图片的fetch()调用默认跟随重定向。虽然代码通过isRemoteAllowed()检查初始URL域名白名单,但未验证重定向后的URL。攻击者利用此漏洞可引导Worker访问任意URL(如内网地址),绕过白名单限制。该漏洞源于对CVE-2025-58179的不完全修复,现已修复。
该漏洞的根源在于`@astrojs/cloudflare`适配器在处理远程图片资源时的安全逻辑缺陷。具体位于`packages/integrations/cloudflare/src/utils/image-binding-transform.ts`文件中,当组件请求远程图片时,底层使用了`fetch()`函数获取数据。尽管开发者引入了`isRemoteAllowed()`函数作为安全机制,用于验证请求的源URL是否位于预设的域名白名单之内,以防止对未授权站点的访问。然而,关键的疏漏在于`fetch()`调用时未显式配置`redirect`选项,导致其默认行为为`'follow'`(自动跟随重定向)。攻击者可以利用这一特性,首先诱导目标应用请求一个位于白名单内但由攻击者控制的URL。当适配器发起请求时,攻击者的服务器响应一个HTTP 301或302重定向状态码,将Location头指向受害者的内网敏感资源(例如本地管理后台、云服务元数据接口`http://169.254.169.254`等)。由于`fetch`自动跟随重定向且不会再次触发`isRemoteAllowed()`检查,Cloudflare Worker将代表用户访问受限的内网地址。这构成了服务端请求伪造(SSRF)攻击,使得攻击者能够探测内网拓扑或窃取敏感数据。