CVE-2026-42612Grav是一个基于文件的Web平台。在2.0.0-beta.2版本之前,该平台存在一个存储型跨站脚本(XSS)漏洞。该漏洞允许拥有发布者级权限的账户执行任意JavaScript代码。问题的根源在于`detectXss()`函数在处理未加引号的HTML事件属性时存在黑名单绕过缺陷。攻击者可以利用此缺陷绕过安全过滤,将恶意脚本注入并存储在服务器端。当其他用户访问受感染的页面时,恶意脚本将在其浏览器中执行。该安全问题已在2.0.0-beta.2版本中得到修复。
该漏洞的核心机制在于Grav CMS使用的`detectXss()`函数采用了不完善的黑名单过滤策略。具体来说,当处理用户输入的HTML内容时,如果HTML标签中的事件属性(如onerror, onload等)没有被引号包裹,过滤器的正则匹配逻辑可能无法识别这些属性,从而允许恶意载荷通过。攻击者只需具备publisher级别的账户权限,便可在内容编辑界面提交构造特殊的HTML标签。例如,使用`<img src=x onerror=alert(1)>`这样未加引号的属性结构,即可成功绕过检测。由于是存储型XSS,该恶意代码会持久化保存在页面中,任何后续访问该页面的用户都会触发脚本执行,进而可能导致Cookie窃取、会话劫持或进一步的权限提升。