Vulnerabilidad en la biblioteca ruby-saml que provoca eludir la autenticación en GitLab

Se han publicado actualizaciones correctivas para la plataforma de desarrollo colaborativo GitLab (17.9.2, 17.8.5 y 17.7.7) que corrigen una vulnerabilidad (CVE-2025-25291, CVE-2025-25292) que permite eludir la autenticación SAML (Security Assertion Markup Language). La vulnerabilidad está presente en la biblioteca Ruby ruby-saml, que implementa funciones para la autorización SAML. Además de GitLab, la vulnerabilidad también afecta a otros proyectos que utilizan esta biblioteca. El problema se solucionó en las actualizaciones de ruby-saml 1.18.0 y 1.12.4.

La vulnerabilidad se debe a diferencias en la forma en que los analizadores ReXML y Nokogiri analizan los documentos XML, lo que da como resultado que se generen documentos con estructuras diferentes al procesar el mismo documento XML. El problema es que REXML y Nokogiri manejan las firmas digitales en un documento XML de manera diferente, lo que puede usarse para crear condiciones en las que una firma se usa para la verificación y otra para la certificación del usuario. Esta capacidad permite a un atacante utilizar el método de ataque XML Signature Wrapping (XSW) para falsificar una respuesta SAML para contenido arbitrario, dado acceso a cualquier documento SAML firmado.

El problema se identificó como resultado de una iniciativa de GitHub, que estaba considerando la posibilidad de migrar GitHub para utilizar esta biblioteca y, para probar la seguridad, organizó una competencia (Bug bounty) para hackear un entorno de prueba en el que se utilizaba la biblioteca ruby-saml para la autenticación SAML. Un investigador de seguridad señaló la vulnerabilidad. Mientras investigaba el problema, un empleado de GitHub descubrió otro método de ataque basado en el mismo principio.

La posibilidad del ataque fue confirmada posteriormente para GitLab. En el contexto de GitLab, la vulnerabilidad permite a un atacante con acceso a cualquier documento SAML firmado correctamente autenticarse como un usuario diferente, es decir, Para eludir la autenticación e iniciar sesión como otro usuario, el atacante ya debe tener acceso a una de las cuentas en funcionamiento.

Fuente: opennet.ru

Añadir un comentario