CVE-2026-42841Grav是基于文件的Web平台。在2.0.0-beta.2版本之前,存在一个存储型跨站脚本(XSS)漏洞。拥有页面编辑权限的经过身份验证的用户,可以通过Grav的Markdown媒体操作语法,将可执行的JavaScript事件处理程序属性注入到渲染的图像HTML中。该问题是由Markdown图像查询参数转换为可调用的媒体操作引起的,攻击者可以利用公共的attribute()方法设置任意的HTML属性名称和值,从而在管理员或其他用户查看页面时执行恶意脚本。该漏洞已在2.0.0-beta.2版本中修复。
该漏洞的根源在于Grav处理Markdown媒体操作时的不安全实现。当用户在Markdown中插入图片时,可以通过查询参数调用特定的媒体方法。攻击者发现可以利用这一机制调用公共的attribute()方法。通过精心构造的Markdown语法,攻击者可以将任意的HTML属性(如onload、onerror等事件处理器)注入到最终渲染的<img>标签中。由于系统未对属性名和值进行严格的过滤或验证,当其他用户(特别是管理员)访问包含该恶意图片的页面时,浏览器会解析并执行注入的JavaScript代码。这利用了Grav将Markdown参数直接映射到对象方法调用的特性,绕过了常规的输入校验,导致了持久化的跨站脚本攻击风险。