CVE-2026-42842Grav CMS Form插件在9.1.0版本之前存在存储型跨站脚本(XSS)漏洞。该漏洞源于插件的选择字段模板在管理面板中渲染分类标签和类别值时,错误地使用了Twig的`|raw`过滤器,从而绕过了全局自动转义保护。拥有编辑器权限的恶意用户可以利用此漏洞在表单字段中注入任意JavaScript代码。一旦管理员在后台查看或编辑包含该恶意数据的页面,脚本将在其浏览器会话中执行。攻击者可借此窃取管理员凭证或执行未授权操作。官方已在9.1.0版本中修复了此问题。
该漏洞的技术核心在于Grav CMS Form插件对Twig模板引擎`|raw`过滤器的误用。在Web开发中,输出用户输入的数据时通常应进行HTML实体转义以防止XSS。然而,Grav Form插件在处理后台管理面板的分类标签和类别值渲染时,使用了`|raw`过滤器。该过滤器明确告诉Twig引擎数据是安全的,不应被转义,导致全局的`autoescape`安全机制失效。
利用该漏洞不需要管理员权限。攻击者只需获得一个低级别的编辑器账户,即可在表单的Select字段或相关Taxonomy字段中植入恶意载荷(如`<img src=x onerror=alert(1)>`)。由于这是存储型漏洞,恶意载荷被持久化。当管理员登录后台并访问受影响的页面列表或编辑详情时,后端会读取这些数据并通过`|raw`过滤器渲染。此时,恶意JavaScript代码将在管理员的浏览器上下文中直接运行。攻击者可以通过构造特定的JS代码窃取Session ID、Cookie或利用管理员权限执行API调用,从而完全接管CMS管理权限。