SAML es un marco basado en XML que significa lenguaje de marcado de aserción de seguridad . Veamos cómo se usa SAML para habilitar SSO (Single-Sign-On). SSO es un término utilizado para un tipo de método de inicio de sesión en el que una empresa configura todas sus aplicaciones web de tal manera que el usuario puede iniciar sesión en todas estas aplicaciones con solo iniciar sesión una vez.
Ejemplo: cuando uno inicia sesión en gmail.com, puede visitar YouTube, Google Drive y otros servicios de Google sin tener que iniciar sesión en cada servicio por separado.
El flujo de autenticación SAML se basa en dos entidades:
- Proveedores de servicios (SP): el SP recibe la autenticación del IdP y otorga la autorización al usuario.
- Proveedores de identidad (IdP): el IdP autentica a un usuario y envía sus credenciales junto con sus derechos de acceso al servicio al SP.
En el ejemplo anterior, el SP será Gmail y el IdP será Google. SAML habilita SSO y, como se explicó anteriormente, un usuario puede iniciar sesión una vez y se utilizarán las mismas credenciales para iniciar sesión en otros SP.
Flujo de trabajo de autenticación SAML:
- Un usuario intenta iniciar sesión en Gmail.
- Gmail genera una solicitud SAML.
- El navegador envía la solicitud SAML a Google, que analiza esta solicitud, autentica al usuario y crea una respuesta SAML. Esta respuesta SAML se codifica y se envía de vuelta al navegador.
- El navegador envía esta respuesta SAML a Gmail para su verificación.
- Si el usuario se verifica correctamente, inicia sesión en Gmail.
Solicitud SAML –
Algunos de los términos importantes en la solicitud SAML se definen a continuación:
- ID: identificador de una solicitud SAML en particular.
- Emisor: el nombre del proveedor de servicios (SP).
- NameID: el nombre de usuario/dirección de correo electrónico o número de teléfono que se utiliza para identificar a un usuario.
- AssertionConsumerServiceURL: la interfaz de URL de SAML del SP donde la dirección IP envía el token de autenticación.
Respuesta SAML –
Una respuesta SAML consta de dos partes:
- Aserción:
es un documento XML que tiene los detalles del usuario. Contiene la marca de tiempo del evento de inicio de sesión del usuario y el método de autenticación utilizado (por ejemplo, autenticación de 2 factores, Kerberos, etc.) - Firma:
es una string codificada en Base64 que protege la integridad de la afirmación. (Si un atacante intenta cambiar el nombre de usuario en la afirmación por el nombre de usuario de la víctima, la firma evitará que el hacker inicie sesión como usuario).
Generación de claves –
El proveedor de identidad (IdP) genera una clave privada y una clave pública. Firma la aserción con la clave privada. La clave pública se comparte con el proveedor de servicios (SP), que la utiliza para verificar la respuesta de SAML y luego iniciar la sesión del usuario.
Vulnerabilidades de SAML explotadas por piratas informáticos:
- Firma no verificada:
si alguien puede cambiar la identificación del nombre (nombre de usuario) en la respuesta SAML e iniciar sesión como otra persona debido a la falta de un proceso de verificación de firma. - La firma solo se verifica cuando existe:
si alguien cambia el valor de identificación del nombre y elimina la firma antes de que el navegador reciba la respuesta y todavía puede iniciar sesión como víctima. - Inyección de comentarios:
un usuario puede registrarse con un comentario XML en el nombre de usuario de la siguiente manera:email: prerit<!--notprerit-->@test.com
Mientras procesa la respuesta SAML, el SP ignorará el comentario y nos registrará como la víctima. Toda la respuesta SAML se puede interceptar mediante el uso de un proxy como una suite burp. Tenga en cuenta que primero debe decodificarse con el formato URL y luego con el formato Base64 para poder verlo.
- Repetición de SAML:
el atacante captura la respuesta de SAML y la usa varias veces para iniciar sesión como víctima.
Publicación traducida automáticamente
Artículo escrito por preritpathak y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA