En el mundo del software, donde la seguridad es una preocupación constante, se ha descubierto recientemente una vulnerabilidad crítica en la biblioteca ruby-saml, afectando a todas sus versiones hasta la 1.17.0. Identificadas como CVE-2025-25291 y CVE-2025-25292, estas fallas permiten a atacantes con acceso a una firma válida, creada con la clave utilizada para validar las respuestas o afirmaciones SAML de una organización, construir sus propias afirmaciones y así autenticarse como cualquier usuario. Este hallazgo pone en riesgo la seguridad de miles de cuentas y es un recordatorio de los desafíos complejos en la protección de datos.
Ante la gravedad de la situación, se insta a los usuarios de ruby-saml a actualizar a la versión 1.18.0 para mitigar estos riesgos de seguridad. Aquellas bibliotecas que dependen de ruby-saml, como omniauth-saml, también deben actualizarse a versiones que incluyan la versión corregida de ruby-saml. A pesar de no utilizar actualmente ruby-saml para su autenticación, GitHub estaba considerando reintroducirla como biblioteca de código abierto. No obstante, una instancia explotable de esta vulnerabilidad fue hallada en GitLab, lo que llevó al equipo de seguridad de GitHub a notificar a sus desarrolladores para proteger a sus usuarios de potenciales ataques.
GitHub había abandonado ruby-saml en 2014 en favor de su propia implementación de SAML, pero tras informes de vulnerabilidades en su implementación, contemplaron nuevamente el uso de ruby-saml. Durante una revisión en octubre de 2024, se detectó un bypass de autenticación en ruby-saml (CVE-2024-45409), lo que derivó en una investigación más profunda sobre su seguridad. Como medida preventiva, GitHub lanzó un programa de recompensas por errores, permitiendo a investigadores seleccionados acceder a entornos de prueba que utilizaban ruby-saml, para evaluar la seguridad de su implementación.
En el análisis del código, se descubrió que ruby-saml empleaba dos analizadores XML distintos en el proceso de verificación de firmas: REXML y Nokogiri. REXML, implementado en Ruby puro, y Nokogiri, que ofrece una API más amigable, interpretan de manera diferente el mismo input, creando una brecha que podría ser explotada para un bypass de autenticación. Identificar y explotar esta vulnerabilidad requirió varios pasos, desde reconocer el uso de dos analizadores diferentes hasta simular un exploit funcional basado en sus discrepancias.
Para prevenir el uso malicioso de esta vulnerabilidad, se recomienda a las organizaciones que revisen sus registros de inicio de sesión en busca de actividades sospechosas, especialmente desde direcciones IP no habituales para sus usuarios.
El problema subraya una dificultad recurrente en la implementación de SAML: las complejidades de la validación de firmas y los resúmenes. Soluciones como actualizaciones de bibliotecas y una vigilancia constante en el uso y manejo de herramientas de seguridad son cruciales para minimizar estos riesgos. Estos desafíos refuerzan la necesidad de un enfoque proactivo para salvaguardar los sistemas de autenticación y asegurar la integridad de los datos en una era digital cada vez más amenazada.