Vulnerabilidad encontrada en productos Single-Sign-On SSO

Share this…

Una peculiaridad en el comportamiento de las bibliotecas de SAML ha dejado implementaciones de inicio de sesión único (Single-Sign-On SSO) vulnerables al abuso. Permite a un atacante que haya obtenido acceso autenticado engañar al sistema para que otorgue acceso adicional como un usuario diferente sin el conocimiento de la contraseña de ese usuario.

Esto podría ser utilizado por un atacante que haya comprometido una cuenta de acceso limitado de bajo nivel para adquirir acceso a servicios en la nube de terceros, o podría ser utilizado por un pirata informático que busque acceso a áreas de red reservadas.

Digital key in pixeled keyhole, 3d render

La vulnerabilidad fue descubierta por el equipo de investigación de una empresa de seguridad cibernética. Según la investigación, afecta a muchos de los principales proveedores de SSO y probablemente a la mayoría de los desarrollos de SSO.

Security Assertion Markup Language (SAML) es el protocolo utilizado por la mayoría de las implementaciones de SSO. Es lo que permite que se pase la autenticación entre el almacén de identidades de una empresa y, por ejemplo, un servicio de terceros. Habitualmente, un usuario iniciará sesión en el almacén de identidades. Esto contiene las credenciales que permitirán que el mismo usuario acceda a otros servicios.

SAML se utiliza para pasar la autenticación, a través del navegador, del proveedor de identidad al servicio de terceros, otorgando acceso. La vulnerabilidad radica en cómo SAML codifica la autenticación en la “respuesta” del proveedor.

La respuesta de autenticación SAML contiene dos elementos principales: la afirmación y la firma. El elemento de afirmación nos dice que este NameID está autenticado. El elemento de firma está diseñado para evitar que el NameID de usuario autenticado se cambie en cualquier punto entre el proveedor de identidad y el servicio al que se accede. “Si el atacante puede modificar el ‘NameID’ sin invalidar la firma, eso sería malo”, comentan los investigadores en seguridad de datos.

“Una de las causas de esta vulnerabilidad es un comportamiento inesperado de las bibliotecas XML como ‘lxml’ de Python o ‘REXML’ de Ruby”. Los comentarios se pueden incluir en la firma, pero el proceso de ensalzamiento de las bibliotecas SAML tiende a soltar todo el texto después del primer nodo de texto para aislar el NameID.

Investigadores en seguridad cibernética explican, “como atacante con acceso a la cuenta ‘usuario@user.com.evil.com’, puedo modificar las  afirmaciones SAML para cambiar el NameID a ‘usuario@usuario.com’ cuando es procesado por el SP”. Los siete caracteres están insertados antes de .evil.com. Esto hace que el proceso de ensalzamiento caiga ‘.evil.com’, dejando la cuenta autenticada como ‘usuario@usuario.com’.

No todas las implementaciones de SSO son vulnerables a este problema, pero muchas sí lo son. Todo lo que se necesita es una cuenta genuina que pueda ‘modificar’ a su objetivo de ataque, además de la comprensión técnica relativamente menor para interceptar y editar la autenticación SAML a medida que pasa a través del navegador.

Los diferentes SSO afectados tendrán diferentes recomendaciones específicas, y sería mejor consultarlas para obtener orientación. Del mismo modo, hay diferentes recomendaciones para los mantenedores de identidad o proveedores de servicios. Los profesionales en seguridad de datos, sugieren, hacer cumplir la autenticación de múltiples factores, “porque esta vulnerabilidad solo permitiría eludir el primer factor de autenticación del usuario, pero si su IdP es responsable tanto del primer factor como del segundo factor autenticación, es probable que esta vulnerabilidad pase por alto ambos”.

La empresa de seguridad cibernética ha confirmado la vulnerabilidad en: OneLogin – python-saml (CVE-2017-11427); OneLogin – ruby-saml (CVE-2017-11428); Clever – saml2-js (CVE-2017-11429); OmniAuth-SAML (CVE-2017-11430); Shibboleth (CVE-2018-0489); y Duo Network Gateway (CVE-2018-7340).