GitHub ha estado proporcionando autenticación empresarial mediante SAML desde 2014, comenzando con su servicio GitHub Enterprise Server. El inicio de sesión único (SSO) a través de SAML permite a las empresas integrar sus proveedores de identidad con diversos productos de GitHub, permitiendo una gestión empresarial más efectiva en la plataforma.
La implementación de SAML en GitHub requirió construir y mantener soporte para la especificación SAML 2.0, que define el proceso de autenticación y la confianza entre un proveedor de identidad y los productos de la empresa. Este proceso involucra la generación de metadatos, así como la creación y validación de solicitudes y respuestas de autenticación.
El código relacionado con SAML es particularmente crítico desde una perspectiva de seguridad. Cualquier error podría provocar un bypass de autenticación o la suplantación de identidad de usuarios. Con un enfoque que utiliza análisis de XML y criptografía, las especificaciones complejas aumentan la superficie de ataque, permitiendo posibles manipulaciones de datos.
Desde su lanzamiento, GitHub ha invertido en robustecer estos procesos, colaborando con investigadores de seguridad y a través de un programa de recompensas para corregir vulnerabilidades. No obstante, la amplitud y complejidad del problema requerían una revisión y actualización exhaustiva.
El año pasado, el equipo de ingeniería de GitHub decidió reevaluar su enfoque. Tras analizar su implementación, optaron por la biblioteca ruby-saml, considerada por su fuerte comunidad. GitHub validó esta nueva opción mediante pruebas A/B, evaluando cuidadosamente la estabilidad del código.
Además, mejoraron la validación de esquema y minimizaron la superficie de ataque. Adoptando una estrategia de doble análisis, integraron tanto la antigua biblioteca como la nueva, ofreciendo mayor robustez y conteniendo el impacto de posibles vulnerabilidades futuras.
Este enfoque proactivo permite a GitHub procesar cerca de un millón de respuestas SAML diarias con mayor seguridad y resiliencia. La experiencia adquirida proporciona un modelo eficaz para otros equipos enfrentando desafíos similares, subrayando la importancia de mejoras incrementales y fundamentadas en datos.