SAML
¿Qué es SAML?
SAMLEstándar abierto basado en XML para intercambiar aserciones de autenticación y autorización entre un proveedor de identidad y un proveedor de servicio.
SAML (Security Assertion Markup Language), estandarizado como OASIS SAML 2.0 en 2005, define cómo un proveedor de identidad (IdP) de confianza emite aserciones XML firmadas digitalmente que describen la identidad y los atributos de un usuario para un proveedor de servicio (SP), permitiendo el inicio de sesión único (SSO) web entre dominios de seguridad. SAML 2.0 soporta los bindings HTTP-Redirect y HTTP-POST; el SP debe validar la firma XML de la aserción, la Audience, las condiciones temporales NotOnOrAfter y el InResponseTo antes de crear una sesión.
Ataques y debilidades
Dominan dos clases de fallos. El XML Signature Wrapping (XSW) y los errores de inyección de comentarios permiten a un atacante colar datos que controla saltándose la verificación de la firma. En febrero de 2018, Duo Labs reveló una amplia clase de estos fallos en kits de herramientas populares —CVE-2017-11427 (python-saml), CVE-2017-11428 (ruby-saml), CVE-2017-11429 (saml2-js) y CVE-2017-11430 (omniauth-saml)—, donde un comentario <!-- --> insertado en el NameID truncaba el sujeto analizado, permitiendo que un usuario autenticado iniciara sesión como otro. Golden SAML, descrito por CyberArk en 2017, es posterior a la intrusión: un atacante que roba la clave privada de firma de tokens de AD FS puede falsificar aserciones arbitrarias que eluden contraseñas y MFA. APT29 usó exactamente esto en la campaña SolarWinds/SUNBURST de 2020 para acuñar tokens federados que parecían inicios de sesión normales.
Defensas: exigir respuestas y aserciones firmadas, comprobaciones estrictas de audiencia/destinatario, proteger por hardware (HSM) la clave de firma de tokens, rotarla y monitorizar inicios de sesión federados anómalos. Para integraciones nuevas suele preferirse OpenID Connect.
flowchart LR U[Navegador del usuario] -->|1 acceder al recurso| SP[Proveedor de servicio] SP -->|2 redirección AuthnRequest| IdP[Proveedor de identidad] IdP -->|3 autenticar al usuario| IdP IdP -->|4 aserción SAML firmada| U U -->|5 POST de la aserción| SP SP -->|6 verificar firma + condiciones| SP SP -->|7 sesión concedida| U
● Ejemplos
- 01
Un IdP corporativo emitiendo una aserción SAML para iniciar sesión en Salesforce.
- 02
Un proveedor de servicio que valida un AuthnResponse firmado por Microsoft Entra ID.
● Preguntas frecuentes
¿Qué es SAML?
Estándar abierto basado en XML para intercambiar aserciones de autenticación y autorización entre un proveedor de identidad y un proveedor de servicio. Pertenece a la categoría de Identidad y acceso en ciberseguridad.
¿Qué significa SAML?
Estándar abierto basado en XML para intercambiar aserciones de autenticación y autorización entre un proveedor de identidad y un proveedor de servicio.
¿Cómo defenderse de SAML?
Las defensas contra SAML combinan habitualmente controles técnicos y prácticas operativas, como se detalla en la definición.
¿Cuáles son otros nombres para SAML?
Nombres alternativos comunes: SAML 2.0, Security Assertion Markup Language.