CVE-2025-64087CVE-2025-64087是opensagres XDocReport项目中一个严重的服务器端模板注入(SSTI)漏洞。该漏洞存在于XDocReport的FreeMarker模板引擎组件中,影响版本从v1.0.0到v2.1.0。攻击者可以通过在模板中注入精心构造的恶意表达式来绕过FreeMarker的安全限制,进而执行任意代码。由于该漏洞的CVSS评分高达9.8,属于严重级别,且攻击向量为网络方式,无需任何认证和用户交互即可利用,因此对使用该组件的应用程序构成极大威胁。XDocReport是一个流行的Java库,用于从Office文档和PDF模板生成报告,被许多企业应用广泛使用。该漏洞的披露引发了安全社区的广泛关注,官方已在GitHub上发布了修复补丁(PR #705)。
该漏洞的根本原因在于XDocReport的FreeMarker组件未能正确过滤用户输入的模板内容。FreeMarker是一个强大的Java模板引擎,支持通过${...}语法插入动态内容。攻击者可以利用FreeMarker的内置函数和对象访问机制,构造恶意payload来访问危险类和方法。典型的攻击手法包括:1) 利用${完全限定类名?new()}<#assign ex='freemarker.template.utility.Execute'?new()>${ex('命令')}模式创建任意对象;2) 通过${.data_model['xxx']}访问数据模型;3) 利用${.globals}获取全局变量。在XDocReport的文档转换流程中,当用户提交的模板内容未经充分消毒就被传递给FreeMarker处理时,攻击者可以注入上述恶意表达式。由于FreeMarker默认配置下允许访问java.lang.Process等危险类,攻击者可以执行系统命令、读取敏感文件甚至建立后门连接。修复方案需要在模板处理前实施输入验证,或限制FreeMarker的Sandbox配置以禁用危险内置函数。