Recientemente se han descubierto vulnerabilidades críticas de bypass de autenticación en la biblioteca ruby-saml, afectando a todas las versiones hasta la 1.17.0. Estas vulnerabilidades (identificadas como CVE-2025-25291 y CVE-2025-25292) permiten a atacantes que poseen una firma válida, creada con la clave utilizada para validar las respuestas o afirmaciones SAML de una organización, construir sus propias afirmaciones SAML y, por lo tanto, autenticarse como cualquier usuario. Esto abre la puerta a posibles ataques de toma de control de cuentas.
Los usuarios de ruby-saml se instan a actualizar a la versión 1.18.0 para mitigar estos riesgos. Además, aquellas bibliotecas que utilicen ruby-saml, como omniauth-saml, también deben ser actualizadas a una versión que haga referencia a la versión corregida de ruby-saml.
A pesar de que GitHub no utiliza actualmente ruby-saml para su autenticación, estaba considerando su uso de nuevo como biblioteca de código abierto para la autenticación SAML. Sin embargo, se encontró una instancia explotable de esta vulnerabilidad en GitLab, lo que llevó al equipo de seguridad de GitHub a notificar a sus desarrolladores para que tomen las acciones necesarias y protejan a sus usuarios de posibles ataques.
GitHub había utilizado ruby-saml hasta 2014, pero cambió a su propia implementación de SAML debido a la falta de ciertas características. Tras recibir informes de vulnerabilidades en su propia implementación, GitHub decidió explorar nuevamente el uso de ruby-saml. Sin embargo, en octubre de 2024, se detectó una vulnerabilidad significativa: un bypass de autenticación en ruby-saml (CVE-2024-45409) que llevó a una investigación más profunda sobre la seguridad de la biblioteca. Como respuesta, GitHub inició un programa de recompensas por errores para evaluar la seguridad de ruby-saml, ofreciendo acceso a investigadores seleccionados a entornos de prueba que utilizaban ruby-saml para la autenticación SAML.
Durante el proceso de revisión del código, se observó que ruby-saml estaba usando dos analizadores XML diferentes en la ruta de verificación de firmas: REXML y Nokogiri. Mientras que REXML es un analizador XML implementado en Ruby puro, Nokogiri proporciona una API más fácil de usar. Se identificó que la interacción entre ambos analizadores podría llevar a que ruby-saml verifique una firma incorrecta, lo que podría resultar en un bypass de autenticación por una diferencia en cómo interpretan el mismo input.
El descubrimiento de esta vulnerabilidad requirió varios pasos: primero, identificar el uso de dos analizadores diferentes; luego, establecer cómo podría explotarse esta discrepancia; después, encontrar un caso real de una diferencia entre los analizadores; y finalmente, aprovechar dicha diferencia para crear un exploit funcional.
Como resultado de estos análisis, se demuestra que los atacantes podrían explotar esta vulnerabilidad al utilizar una firma válida para hacerse pasar por cualquier usuario. Para prevenir un potencial uso malicioso, se recomienda revisar los registros de inicio de sesión para detectar actividades sospechosas provenientes de direcciones IP que no correspondan a la ubicación habitual de los usuarios.
La interrupción entre los procesos de validación de las firmas y los resúmenes es un problema común en la implementación de SAML, haciendo difícil la construcción de implementaciones seguras. La resolución de esta problemática no solo implica actualizaciones en las bibliotecas afectadas, sino también una atención constante a la forma en que se utilizan y se manejan las bibliotecas de seguridad en el desarrollo de software.
vía: GitHub Security