IPBUF安全漏洞报告
English
CVE-2026-41067 CVSS 6.1 中危

CVE-2026-41067 Astro Web框架跨站脚本漏洞

披露日期: 2026-04-24

漏洞信息

漏洞编号
CVE-2026-41067
漏洞类型
XSS
CVSS评分
6.1 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Astro

相关标签

XSSAstro跨站脚本Web安全CVE-2026-41067

漏洞概述

Astro Web框架在6.1.6之前的版本中存在跨站脚本(XSS)漏洞。`defineScriptVars`函数使用大小写敏感的正则清理输入,而HTML解析器对`</script>`标签的解析是大小写不敏感的。攻击者可利用`</Script>`等变体绕过过滤,注入任意HTML或JavaScript代码。

技术细节

该漏洞位于Astro服务端渲染的`defineScriptVars`函数中。该函数利用正则`/</script>/g`试图移除危险的脚本闭合标签。然而,HTML解析器在处理标签时忽略大小写,且允许闭合标签`>`前存在空格或斜杠。因此,攻击者构造如`</Script>`、`</script >`或`</script/>`的payload,即可绕过正则匹配。当这些payload通过`define:vars`指令注入到内联脚本时,浏览器会将其解析为标签闭合,导致攻击者能够逃逸脚本上下文并执行任意恶意代码,实现存储型或反射型XSS攻击。

攻击链分析

STEP 1
1
攻击者识别目标网站使用了受影响版本的Astro框架(< 6.1.6),并存在使用define:vars指令的内联脚本。
STEP 2
2
攻击者构造包含大小写变体或特殊字符的脚本闭合标签Payload,例如'</Script>'、'</script >'。
STEP 3
3
攻击者将Payload通过输入字段发送给服务器,服务器将其作为变量值渲染到页面的<script>标签中。
STEP 4
4
Astro的defineScriptVars函数使用正则/<\/script>/g进行过滤,因大小写不匹配而未能拦截Payload。
STEP 5
5
受害者的浏览器接收到响应,HTML解析器将'</Script>'识别为有效的闭合标签,从而执行了注入的恶意JavaScript代码。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2026-41067 // The payload uses a capital 'S' to bypass the case-sensitive regex /<\/script>/g const maliciousPayload = '</Script><img src=x onerror=alert(1)>'; // Example usage in an Astro component (Vulnerable version < 6.1.6) // --- // <script define:vars={{ userContent: maliciousPayload }}> // console.log(userContent); // </script> // --- // Result: The regex fails to match '</Script>', allowing the img tag to be injected and executed.

影响范围

Astro < 6.1.6

防御指南

临时缓解措施
如果无法立即升级,请避免在define:vars中使用未受信任的输入。或者,在数据传递给define:vars之前,实施自定义的清理逻辑,确保将' script '(忽略大小写)的所有实例进行HTML实体编码或移除。

参考链接

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