Acceso No Autorizado: Estrategias para Eludir la Autenticación SSO SAML Usando Diferenciales de Parser

Elena Digital López

Recientemente, se han detectado vulnerabilidades críticas de bypass de autenticación en la popular biblioteca ruby-saml, que afectan a todas las versiones hasta la 1.17.0. Estas vulnerabilidades, identificadas con los códigos CVE-2025-25291 y CVE-2025-25292, permiten a atacantes que posean una firma válida, generada con la clave utilizada para validar respuestas o afirmaciones SAML de una organización, crearse sus propias afirmaciones SAML. Esto podría permitirles autenticarse como cualquier usuario, lo que desata preocupaciones sobre posibles ataques de toma de control de cuentas.

Ante esta situación, se insta a los usuarios de ruby-saml a actualizar a la versión 1.18.0 para mitigar estos riesgos. Además, se recomienda que las bibliotecas que utilizan ruby-saml, como omniauth-saml, también se actualicen a versiones que hagan referencia a la versión corregida de ruby-saml.

A pesar de que GitHub no utiliza actualmente ruby-saml para su autenticación, había considerado reincorporar esta biblioteca como parte de su sistema de autenticación SAML. Se identificó, no obstante, una instancia explotable de la vulnerabilidad en GitLab, lo que llevó a los responsables de seguridad de GitHub a alertar a sus desarrolladores sobre la necesidad de tomar acciones preventivas para proteger a sus usuarios.

GitHub había hecho uso de ruby-saml hasta 2014, momento en el que optó por una implementación propia debido a la falta de ciertas características. Sin embargo, tras recibir informes de vulnerabilidades en su propia solución, consideró la posibilidad de reutilizar ruby-saml. En octubre de 2024, se detectó una vulnerabilidad significativa: un bypass de autenticación en ruby-saml, que incentivó a GitHub a iniciar una investigación exhaustiva sobre la seguridad de la biblioteca. En respuesta, estableció un programa de recompensas por errores para evaluar la seguridad de ruby-saml, otorgando acceso a investigadores seleccionados a entornos de prueba que utilizaban esta biblioteca para la autenticación.

Durante la revisión del código, el equipo de seguridad de GitHub observó que ruby-saml usa dos analizadores XML diferentes en la verificación de firmas: REXML y Nokogiri. Mientras que REXML es un analizador XML basado en Ruby puro, Nokogiri ofrece una API más accesible. Se descubrió que la interacción entre estos dos analizadores podría hacer que ruby-saml verifique una firma incorrecta, lo que podría resultar en un bypass de autenticación debido a diferencias en la interpretación de un mismo input.

Para descubrir y explotar esta vulnerabilidad, se llevaron a cabo varios pasos, incluyendo la identificación del uso de los dos analizadores, el establecimiento de cómo podría ser aprovechada la discrepancia, la búsqueda de un caso real y, finalmente, la creación de un exploit funcional. Las pruebas demostraron que los atacantes podrían utilizar una firma válida para suplantar a cualquier usuario. Por tanto, se aconseja revisar los registros de inicio de sesión en busca de actividades sospechosas provenientes de direcciones IP que no correspondan a la ubicación habitual de los usuarios.

La interrupción en los procesos de validación de firmas y resúmenes representa un problema habitual en la implementación de SAML, lo que dificulta la creación de implementaciones seguras. La solución a esta problemática no solamente exige actualizaciones en las bibliotecas afectadas, sino también una atención continua a la forma en que se utilizan y manejan las bibliotecas de seguridad durante el desarrollo de software.