IPBUF安全漏洞报告
English
CVE-2026-3837 CVSS 5.4 中危

CVE-2026-3837 Frappe 存储型跨站脚本漏洞

披露日期: 2026-04-22

漏洞信息

漏洞编号
CVE-2026-3837
漏洞类型
存储型跨站脚本 (Stored XSS)
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Frappe

相关标签

XSSFrappeCVE-2026-3837存储型XSSWeb安全

漏洞概述

Frappe框架版本16.10.0中存在一个安全漏洞。经过身份验证的攻击者可以在多种字段类型中持久化精心构造的值。当其他用户在Desk界面中打开受影响的文档时,这些未经过滤的值会被插入到原始HTML属性或元素内容中,从而触发客户端脚本执行。该漏洞是由于易受攻击的格式化程序实现未对存储的值进行转义处理直接插值到HTML中导致的,可能造成低程度的机密性和完整性影响。

技术细节

该漏洞属于存储型跨站脚本攻击(Stored XSS)。其根本原因在于Frappe框架的某些格式化程序在处理数据输出时存在缺陷。具体来说,当攻击者拥有低权限账户时,可以利用系统提供的输入接口,在特定的字段类型中注入恶意JavaScript代码或HTML标签。系统后端在接收并存储这些数据时未进行足够的过滤或清洗。当另一位用户(通常是具有更高权限的管理员)通过Desk前端界面访问包含该恶意数据的文档时,后端在渲染页面时,会调用存在漏洞的格式化程序将数据直接拼接到HTML属性或DOM元素内容中,而未执行HTML实体转义。这导致浏览器将攻击者注入的数据解析为可执行的脚本代码。由于需要用户交互(UI:R)触发,攻击者通常需要诱导受害者点击链接或查看特定页面。利用此漏洞,攻击者可以窃取受害者的Session ID、Cookie等敏感信息,或者以受害者的身份执行未授权操作。

攻击链分析

STEP 1
1. 信息收集
攻击者识别目标系统运行的是Frappe框架,并确认版本是否在受影响范围内。
STEP 2
2. 获取凭证
攻击者注册或通过其他方式获取一个低权限的已认证账户(PR:L)。
STEP 3
3. 注入Payload
攻击者利用低权限账户,通过向导或API在存在漏洞的字段类型中提交包含恶意JavaScript代码的存储型XSS Payload。
STEP 4
4. 数据持久化
系统将恶意数据未经有效过滤即存储在数据库中。
STEP 5
5. 触发漏洞
诱导具有更高权限的用户(如管理员)在Desk界面中打开包含恶意数据的文档(UI:R)。
STEP 6
6. 执行攻击
前端页面渲染时,格式化程序将Payload拼接到HTML中,浏览器执行脚本,攻击者窃取凭证或执行恶意操作。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* PoC Concept for CVE-2026-3837 (Stored XSS in Frappe) Description: Inject a malicious script into a vulnerable field. When an admin views the document, the script executes. */ // Payload to be injected into a vulnerable field (e.g., description or custom field) var payload = '<img src=x onerror=alert(1)>'; // Simulating the API call to store the payload // POST /api/resource/DocType/{id} // { // "vulnerable_field": payload // } console.log("Stored XSS Payload injected: " + payload);

影响范围

Frappe 16.10.0

防御指南

临时缓解措施
建议立即升级Frappe框架至修复该漏洞的最新版本。如果无法立即升级,应严格限制低权限用户的创建和编辑权限,避免不可信用户提交包含HTML标签的数据。同时,部署WAF(Web应用防火墙)规则以拦截潜在的XSS攻击载荷。

参考链接

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