SAP NetWeaver S/4HANA漏洞分析:通过内部函数WRITE_AND_CALL_DBPROG实现ABAP代码执行

本文披露SAP NetWeaver S/4HANA中WRITE_AND_CALL_DBPROG函数模块的安全风险,攻击者可通过该漏洞执行任意ABAP代码并绕过系统权限控制,涉及SAP_BASIS 757 SP 3等版本。

nullFaktor安全公告 <20250719>

漏洞标题

通过内部函数模块WRITE_AND_CALL_DBPROG实现ABAP代码执行

产品信息

  • 受影响产品:SAP NetWeaver S/4HANA
  • 主页:http://www.sap.com
  • 受影响版本:S/4HANA, SAP_BASIS 757 SP 3

风险评级

  • 影响程度:高
  • CVSS 4.0评分:8.4
  • CWE编号:
    • CWE-749:暴露危险方法或功能
    • CWE-94:代码生成控制不当(代码注入)

漏洞详情

在SAP S/4HANA的安全研究中,我们发现函数组SDB2中的WRITE_AND_CALL_DBPROG模块存在安全风险。该模块允许用户执行原生SQL语句,并通过INSERT REPORT将SQL代码写入报告后动态执行,整个过程缺乏输入验证和权限检查。

利用前提

攻击者需要具备执行本地函数模块的权限(包含S_DEVELOP授权且ACTVT=16)。虽然SAP声明生产系统不应分配此权限,但实际企业环境中普遍存在权限配置过大的情况。

攻击影响

  1. 绕过所有权限限制:可任意读写数据库数据
  2. 向SAP命名空间注入自定义代码
  3. 突破系统/客户端的不可修改性锁定

时间线

日期 事件描述
2024-09-06 首次联系SAP
2025-02-05 双方确认在规范配置下不构成安全风险
2025-07-10 公告发布

攻击场景演示

通过SE37执行以下操作:

  1. 创建名为Z_HACKED的报告
  2. 注入SQL语句:UPDATE USREFUS SET REFUSER = 'DDIC' WHERE BNAME = 'DEVELOPER'
  3. 成功将超级用户DDIC关联到当前用户

SAP官方反馈

SAP认为生产系统不应分配S_DEVELOP/ACTVT=16权限,故不视作安全漏洞。建议通过SAP Note 3546011配置详细权限控制。

缓解措施

  • 检查生产系统用户权限
  • 禁止SE37与S_DEVELOP/ACTVT=16的组合权限
  • 非生产系统需细化对象类型权限

关于nullFaktor:奥地利网络安全公司,专注SAP安全测试与咨询服务。
官网:https://www.nullfaktor.com
完整技术细节:https://www.nullfaktor.com/blog#Advisory_09-07-25

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计