IPBUF安全漏洞报告
English
CVE-2026-42841 CVSS 4.8 中危

CVE-2026-42841 Grav Markdown存储型XSS漏洞

披露日期: 2026-05-11

漏洞信息

漏洞编号
CVE-2026-42841
漏洞类型
跨站脚本攻击 (XSS)
CVSS评分
4.8 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
需要交互 (UI:R)
影响产品
Grav CMS

相关标签

XSSGravCVE-2026-42841存储型XSSCMS漏洞

漏洞概述

Grav是基于文件的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参数直接映射到对象方法调用的特性,绕过了常规的输入校验,导致了持久化的跨站脚本攻击风险。

攻击链分析

STEP 1
步骤1:身份认证
攻击者需要获取一个具有页面编辑权限的合法账户。
STEP 2
步骤2:注入Payload
攻击者在编辑页面时,利用Markdown语法插入图片,并通过媒体操作参数构造恶意XSS Payload。
STEP 3
步骤3:存储Payload
保存页面内容,恶意Markdown代码被持久化存储在服务器上。
STEP 4
步骤4:触发漏洞
当管理员或其他用户访问受感染的页面时,Grav渲染引擎解析Markdown并生成包含恶意事件属性的HTML标签。
STEP 5
步骤5:执行代码
受害者浏览器加载图片并触发事件(如onload),执行攻击者注入的JavaScript代码。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- PoC for CVE-2026-42841 --> <!-- Usage: Insert the following markdown in a page with edit permissions --> ![Alt text](/path/to/image.jpg?attribute=onload=alert(1)) <!-- This injects an onload event handler into the rendered image tag -->

影响范围

Grav < 2.0.0-beta.2

防御指南

临时缓解措施
如果无法立即升级,建议实施严格的访问控制策略,仅允许受信任的用户编辑内容。此外,可以部署Web应用防火墙(WAF)尝试拦截包含特定恶意特征(如attribute=onload)的请求,但这作为临时缓解措施可能存在绕过风险。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表