Durante más de diez años, GitHub ha ofrecido autenticación empresarial mediante SAML, una tecnología crítica para garantizar la seguridad de sus usuarios corporativos. Desde el lanzamiento de GitHub Enterprise Server 2.0.0 en noviembre de 2014, el uso del inicio de sesión único (SSO) a través de SAML ha sido vital para las empresas que buscan integrar sin problemas sus proveedores de identidad con los servicios de GitHub.
El proceso de implementación de SAML por parte de GitHub incluyó la construcción y mantenimiento de soporte para la especificación SAML 2.0. Esta especificación es fundamental para establecer confianza entre los proveedores de identidad y GitHub, abarcando desde la generación de metadatos hasta el procesamiento y validación de respuestas SAML.
La complejidad y criticidad de estas rutas de código no son menores. Se enfrentan al reto de garantizar que no existan vulnerabilidades que permitan eludir la autenticación o generar suplantaciones. La utilización de XML y criptografía, junto con la dependencia de especificaciones complejas, aumenta la posibilidad de ataques debido a la amplia superficie de exposición del código SAML.
Reconociendo estos riesgos, GitHub ha sido proactivo en reforzar su seguridad mediante la colaboración con investigadores internos y su programa de recompensas por errores. Sin embargo, la complejidad de las vulnerabilidades aún planteaba desafíos persistentes.
El año pasado, GitHub decidió reevaluar su enfoque hacia SAML, buscando maneras de seguir siendo confiable en esta tecnología compleja. Después de estudiar su implementación existente, se decidió adoptar un nuevo enfoque, evaluando bibliotecas como ruby-saml, que ofrece soporte y mantenimiento robustos.
Para asegurar la nueva biblioteca, GitHub implementó pruebas A/B, permitiendo observar los cambios y asegurar la estabilidad del código SAML durante la transición. También se enfocaron en la validación de esquemas y en la reducción de la superficie de ataque al aplicar validaciones más estrictas.
GitHub optó por una estrategia de doble análisis al emplear tanto la antigua como la nueva biblioteca, lo que proporciona un mayor nivel de seguridad y minimiza el impacto de futuras vulnerabilidades.
Con esta innovación, GitHub maneja casi un millón de respuestas SAML al día con una resiliencia fortalecida. Esta experiencia ofrece un modelo para otros equipos que enfrentan retos similares, subrayando la importancia de implementar experimentos incrementales y basados en datos para manejar partes complejas dentro de sus sistemas.