Una serie de vulnerabilidades críticas de bypass de autenticación ha sido descubierta en la biblioteca ruby-saml, afectando todas sus versiones hasta la 1.17.0. Las vulnerabilidades, catalogadas como CVE-2025-25291 y CVE-2025-25292, permiten a los atacantes con una firma válida crear sus propias afirmaciones SAML, logrando autenticar cualquier identidad de usuario y abriendo la puerta a posibles tomas 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 el riesgo de estos ataques. Asimismo, se recomienda que las bibliotecas que dependan de ruby-saml, como omniauth-saml, sean actualizadas para incluir la versión corregida de la biblioteca.
Un hecho que resalta es que, aunque GitHub no usa actualmente ruby-saml para sus procesos de autenticación, sí estaba considerando integrarla nuevamente como una biblioteca de código abierto. Sin embargo, una instancia explotable de esta vulnerabilidad se detectó en GitLab, lo que llevó al equipo de seguridad de GitHub a tomar acciones para proteger a sus usuarios mediante la notificación a sus desarrolladores.
Históricamente, GitHub había recurrido a ruby-saml hasta el año 2014, pero decidió cambiar a una implementación propia de SAML debido a la ausencia de ciertas características. El descubrimiento de vulnerabilidades en su sistema autónomo motivó a la empresa a revaluar el uso de ruby-saml en octubre de 2024. En esa fecha, un bypass de autenticación (CVE-2024-45409) evidenció problemas de seguridad significativos, propiciando un programa de recompensas por errores para reforzar su seguridad y ofrecer a los investigadores seleccionados acceso a entornos de prueba.
Durante las revisiones de código, se identificó que ruby-saml utilizaba simultáneamente dos analizadores XML: REXML y Nokogiri. REXML, un analizador integrado en Ruby puro, contrastaba con Nokogiri, conocido por su API más accesible. Esta coexistencia de analizadores dio pie a potenciales verificaciones incorrectas de firmas, resultando en un bypass de autenticación debido a las diferencias en la interpretación del mismo input.
El complejo proceso de descubrimiento de esta vulnerabilidad incluyó múltiples pasos: identificar el uso dual de analizadores, entender cómo podría explotarse esta discrepancia, encontrar diferencias reales entre los analizadores y, finalmente, emplear la diferencia para crear un exploit funcional.
Para prevenir exploitaciones maliciosas, se recomienda revisar los registros de inicio de sesión para detectar actividades sospechosas de direcciones IP inusuales. La dificultad de implementar de manera segura estas bibliotecas subraya la crítica importancia de las actualizaciones, así como una vigilancia constante en su uso dentro del desarrollo de software, como parte integral de una estrategia eficaz de ciberseguridad.