CVE-2026-28499CVE-2026-28499是LeafKit模板引擎中的一个跨站脚本(XSS)漏洞。LeafKit是一个使用Swift风格语法的模板语言,广泛应用于Vapor Web框架中。该漏洞存在于1.14.2之前的版本,当模板通过`#(value)`语法打印集合类型(数组或字典)时,HTML转义机制未能正确工作。这导致攻击者可以通过在集合中注入恶意脚本内容,使得这些内容在渲染时被直接输出而不会进行HTML实体编码。攻击者利用此漏洞可以窃取用户会话cookie、劫持用户账户、执行恶意操作或重定向用户到钓鱼网站。由于该漏洞需要用户交互才能触发(UI:R),攻击复杂度相对较低,CVSS评分为6.1(中危)。
LeafKit模板引擎在处理`#(value)`语法时,对集合类型(Array/Dictionary)的HTML转义存在缺陷。当开发者使用`#(collection)`输出数组或字典时,LeafKit直接将其转换为字符串表示形式进行输出,但转义逻辑未正确处理集合内部元素的特殊字符。具体来说,如果集合中包含`<script>`标签、事件处理器属性(如onerror、onload)或JavaScript伪协议(如javascript:),这些内容不会被转换为HTML实体,而是直接渲染到页面中。攻击者可以通过以下方式利用:1) 在用户可控的数据源中注入恶意内容到集合;2) 构造包含XSS payload的数组/字典;3) 当模板渲染该集合时,payload会被浏览器解析执行。修复方案在版本1.14.2中通过确保集合元素的递归转义来解决此问题。