CVE‑2024‑45409 afecta la librería Ruby‑SAML (versiones ≤ 12.2 y entre 1.13.0 y 1.16.0), ampliamente usada por aplicaciones que implementan SAML como mecanismo de autenticación (por ejemplo, GitLab).
Debido a un error en la verificación de firmas XML, un atacante sin credenciales puede forjar respuestas SAML válidas, logrando iniciar sesión como cualquier usuario, incluyendo administradores.
El puntaje asignado es 9.8–10.0 (CRÍTICO). La vulnerabilidad ya fue explotada en entornos reales.
El fallo radica en cómo Ruby‑SAML extrae el valor del digest del SAML Response usando un XPath excesivamente permisivo:
encoded_digest_value = REXML::XPath.first(
ref,
"//ds:DigestValue",
{ "ds" => DSIG }
)
El // en XPath selecciona el primer elemento DigestValue que encuentre en todo el documento, no necesariamente el que corresponde al SignedInfo. Un atacante puede insertar un DigestValue malicioso antes del bloque legítimo (por ejemplo dentro de samlp:Extensions), lo que hace que se valide respecto al contenido modificado.
El protocolo comprende: se calcula digest sobre el Assertion modificado → se compara con ese DigestValue smuggled → luego se verifica la firma sobre el SignedInfo original (que quedó sin cambios), por lo que la verificación pasa, permitiendo inyección de contenido arbitrario.
El atacante obtiene una respuesta SAML válida.
Inyecta un nodo <ds:DigestValue>…</ds:DigestValue> manipulado dentro de samlp:Extensions.
Cambia el contenido de <Assertion> para suplantar un usuario objetivo (ej. admin).
Reenvía la respuesta al Service Provider vulnerable (e.g. GitLab).
Ruby‑SAML extrae el digest falso y pasa la verificación, luego firma pasa, permitiendo login como usuario arbitrario.
https://github.com/CodeBugBox/CodeBugBox/blob/main/CVE%E2%80%912024%E2%80%9145409
Una PoC completa está disponible públicamente ejecutando este proceso y reenviando la respuesta.
La vulnerabilidad está corregida en versions ≥ 1.17.0 y 1.12.3 de Ruby‑SAML.
Proveedores como GitLab lanzaron actualizaciones:
CVE‑2024‑45409 demuestra una falla crítica en la implementación de validaciones en protocolos de autenticación: un XPath demasiado permisivo permite engañar al flujo de firma y suplantar identidad sin interactuar.
🔒 Reflexión técnica: los mecanismos de seguridad deben limitar con precisión qué se valida y qué no. Validaciones amplias como “buscar en todo el XML” pueden ser explotadas. Las mitigaciones deben incluir parche, refactorización del XPath y políticas de auditoría.