IPBUF安全漏洞报告
English
CVE-2026-41258 CVSS 9.1 严重

CVE-2026-41258 OpenMRS Velocity模板RCE漏洞

披露日期: 2026-05-15

漏洞信息

漏洞编号
CVE-2026-41258
漏洞类型
服务端模板注入 (SSTI)
CVSS评分
9.1 严重
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
OpenMRS Core

相关标签

SSTIRCEOpenMRSApache VelocityCVE-2026-41258代码注入

漏洞概述

OpenMRS Core特定版本存在严重漏洞,其核心组件在解析概念参考范围时,将用户输入的字符串作为Apache Velocity模板执行且未做沙箱限制。拥有“Manage Concepts”权限的攻击者可利用此缺陷植入恶意代码,导致服务器端任意代码执行。

技术细节

漏洞位于ConceptReferenceRangeUtility.evaluateCriteria()方法中。该方法将数据库存储的字符串作为Apache Velocity模板进行求值。由于VelocityEngine初始化时仅配置了日志属性,未设置安全沙箱,保留了默认的UberspectImpl。这允许模板表达式通过Java反射机制调用任意类和方法。攻击者只需具备“Manage Concepts”权限,即可在概念对象的参考范围标准字段中植入恶意Payload。当任何用户或API调用触发针对该概念的观测验证时,Velocity上下文(包含$patient, $obs, $fn等敏感对象)会自动执行该Payload,从而实现远程代码执行,完全危及系统的机密性、完整性和可用性。

攻击链分析

STEP 1
步骤1:权限获取
攻击者获取OpenMRS系统的“Manage Concepts”(管理概念)权限。
STEP 2
步骤2:植入Payload
攻击者编辑一个Concept对象,在其Reference Range Criteria字段中注入恶意的Apache Velocity模板代码。
STEP 3
步骤3:触发漏洞
当系统用户或API请求对该Concept进行Observation(观测数据)验证时,系统自动调用evaluateCriteria()方法。
STEP 4
步骤4:代码执行
VelocityEngine解析并执行恶意模板,利用Java反射执行任意系统命令,导致服务器被控制。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#set($exec = ) #set($proc = $exec.exec('id')) $proc.waitFor() #set($in = $proc.getInputStream()) #set($result = ) #foreach($i in [1..$in.available()]) #set($ch = $in.read()) $result.append($ch.toChars()) #end $result.toString()

影响范围

OpenMRS Core 2.7.0 - 2.7.8
OpenMRS Core 2.8.0 - 2.8.5

防御指南

临时缓解措施
建议立即限制“Manage Concepts”权限的分配,仅授予必要的可信管理员。同时,应密切监控系统日志中是否存在异常的模板解析活动或可疑的子进程创建,直到完成补丁更新。

参考链接

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