CVE-2026-45028Astro是一个Web框架。在6.1.10版本之前,Astro使用AES-GCM加密来保护服务器岛屿props和slots参数的机密性和完整性,但未将密文绑定到其预期的组件或参数类型。攻击者可以将一个组件的加密props值重放为另一个组件的slots值,反之亦然。由于slots包含原始未转义的HTML,而props可能包含用户控制的值,这可能导致应用程序中的XSS。该漏洞发生在应用程序使用服务器岛屿、两个不同的服务器岛屿组件为prop和slot共享相同的键名,并且攻击者完全控制重叠prop的值时。
该漏洞的核心在于Astro服务端组件的加密机制缺乏上下文绑定。虽然使用了AES-GCM进行加密,但解密过程仅验证了数据的完整性和真实性,未验证加密数据原本属于哪个组件或参数类型。攻击者利用这一逻辑缺陷,通过“重放攻击”将一个组件中受控的prop(属性)加密数据,发送给另一个组件的slot(插槽)接口。由于slot在渲染时默认将内容作为原始HTML处理而不进行转义,而prop通常被视为文本或对象,当服务器解密并将数据误用在slot上下文中时,攻击者注入的恶意脚本就会被浏览器执行,从而实现跨站脚本攻击(XSS)。