CVE-2023-3349 / CVE-2023-3350 | IBERMATICA RPS 2019
Investigación de seguridad que documenta una divulgación de información no autenticada y una falla de diseño criptográfico en IBERMATICA RPS 2019.
Las vulnerabilidades pueden encadenarse para exponer registros de aplicación que contienen consultas SQL relacionadas con la autenticación y recuperar contraseñas de usuario a partir de texto cifrado AES-CBC reversible.
[AVISO]
Este repositorio se proporciona únicamente con fines de investigación de seguridad, validación defensiva y educativos. Pruebe exclusivamente en sistemas que le pertenezcan o sobre los que tenga autorización explícita para evaluar.
Resumen
Un usuario no autenticado puede acceder a la página de estado del servicio RPS en:
/RPS2019Service/status.html
La página expone controles operativos de registro y permite descargar los registros generados. Estos registros pueden contener datos sensibles de la aplicación, incluidos nombres de usuario, direcciones IP, consultas SQL y valores relacionados con contraseñas.
Las contraseñas no están protegidas con una función hash de un solo sentido. En su lugar, RPS 2019 utiliza AES-128-CBC con material de clave derivado de forma predecible del nombre de usuario. Una vez que se obtienen un nombre de usuario y su valor de contraseña cifrada a partir de los registros, la contraseña puede recuperarse en texto plano.
Vulnerabilidades
| CVE | Descripción | CWE | CVSS 3.1 (CNA) |
|---|
| CVE-2023-3349 | Exposición no autenticada de información sensible a través de registros de aplicación descargables | CWE-200 | 8.2 Alta |
| CVE-2023-3350 | Protección reversible de contraseñas basada en AES-128-CBC y material de clave predecible derivado del nombre de usuario | CWE-327 | 8.2 Alta |
Producto afectado
- Producto: IBERMATICA RPS
- Versión afectada: RPS 2019
- Componente: Funcionalidad de registro y estado del servicio RPS 2019
Cadena de ataque
- Acceder a la página de estado RPS expuesta sin autenticación.
- Habilitar el registro de la aplicación mediante los controles disponibles de la página de estado.
- Provocar o esperar actividad de autenticación.
- Descargar el archivo de registro generado.
- Extraer nombres de usuario y valores de contraseña cifrados de las consultas SQL registradas.
- Derivar el material de clave AES del nombre de usuario correspondiente.
- Descifrar el valor almacenado y recuperar la contraseña en texto plano.
No se requiere inyección SQL, fuerza bruta de contraseñas ni una cuenta previa en la aplicación para esta cadena.
Notas técnicas
La investigación identificó las siguientes condiciones:
- Los registros de depuración contienen consultas SQL completas relacionadas con la autenticación.
- Los intentos de inicio de sesión con nombres de usuario inexistentes pueden registrar la contraseña proporcionada en texto plano.
- Las contraseñas de usuarios existentes aparecen como texto cifrado codificado en Base64 en las consultas SQL.
- El esquema de cifrado utiliza AES-128 en modo CBC.
- La clave y el vector de inicialización se derivan de forma determinista del nombre de usuario y se rellenan a 16 bytes con un carácter fijo.
- El mismo valor predecible se utiliza como clave y como IV.
AES no es el problema subyacente por sí mismo. La vulnerabilidad resulta del uso de cifrado reversible para contraseñas, material de clave predecible y un IV que no es ni aleatorio ni independiente.
Impacto
Una explotación exitosa puede permitir a un atacante remoto no autenticado:
- recuperar información sensible operativa y de la aplicación;
- enumerar nombres de usuario válidos y detalles de la infraestructura;
- obtener contraseñas en texto plano;
- comprometer cuentas RPS privilegiadas;
- reutilizar credenciales expuestas contra otros servicios donde se hayan compartido contraseñas.
- Aplicar la actualización o mitigación proporcionada por el fabricante para RPS 2019.
- Eliminar el acceso público a
/RPS2019Service/status.html.
- Exigir autenticación y autorización sólidas para todos los endpoints de diagnóstico, administración, estado, salud, depuración y métricas.
- Deshabilitar el registro de depuración en producción cuando no sea estrictamente necesario.
- Eliminar credenciales, datos de autenticación y consultas SQL completas de los registros.
- Almacenar las contraseñas con una función hash de contraseñas moderna, con sal y de un solo sentido, como Argon2id, scrypt o bcrypt.
- Rotar todas las credenciales que puedan haber aparecido en los registros afectados.
- Revisar los registros de acceso históricos en busca de solicitudes a la página de estado y descargas de registros.
- Impedir la exposición directa a Internet de las interfaces de gestión y soporte del ERP.
Oportunidades de detección
Los defensores deben investigar:
- solicitudes inesperadas a
/RPS2019Service/status.html;
- solicitudes que habilitan, detienen, eliminan o descargan registros de la aplicación;
- acceso a endpoints de estado o diagnóstico desde redes no confiables;
- eventos de autenticación inusuales después del acceso a los archivos de registro RPS;
- reutilización de credenciales RPS contra otros servicios internos o externos.
Divulgación
Los problemas fueron descubiertos por LABS @ ITRES durante un compromiso ofensivo de seguridad autorizado y se les asignaron identificadores CVE a través de INCIBE-CERT.
Un informe técnico detallado está disponible en la primera entrada de la serie Old Dives:
Referencias
Aviso legal
La información de este repositorio tiene como objetivo ayudar a las organizaciones a identificar, validar y remediar las vulnerabilidades documentadas. Los autores y colaboradores no son responsables del mal uso o los daños derivados del uso de este material.