El equipo de ingeniería de seguridad de productos de GitHub ha dado un importante paso adelante en la protección de su código fuente, implementando herramientas y prácticas avanzadas que garantizan la seguridad de su plataforma. Uno de los componentes centrales de esta nueva estrategia es GitHub Advanced Security (GHAS), que permite identificar, rastrear y mitigar vulnerabilidades mientras se imponen estándares de codificación segura a gran escala.
En el corazón de este enfoque se encuentra CodeQL, el motor de análisis estático que GitHub emplea para realizar evaluaciones de seguridad automatizadas, permitiendo un análisis detallado del código similar al realizado sobre una base de datos. A diferencia de las búsquedas de texto tradicionales, CodeQL ofrece un método sofisticado que ayuda a descubrir problemas que, de otro modo, podrían pasar desapercibidos.
En su último artículo, el equipo de GitHub detalla cómo utiliza CodeQL, compartiendo lecciones valiosas para otras organizaciones. Entre los temas tratados está la creación y gestión de paquetes de consultas personalizadas, el desarrollo de consultas específicas y el análisis de variantes para detectar prácticas de programación inseguras.
GitHub ha configurado CodeQL de diversas maneras para adaptarse a sus distintas necesidades. Para la mayoría de sus más de 10,000 repositorios, utiliza una configuración predeterminada para realizar revisiones de seguridad automáticas en las solicitudes de incorporación de cambios. Sin embargo, para su gran repositorio monolítico de Ruby, se han implementado conjuntos de consultas personalizados, permitiendo un enfoque más específico y detallado.
La gestión de las consultas CodeQL ha avanzado significativamente. Antes, las consultas se almacenaban directamente en el repositorio monolítico, lo que complicaba el proceso. Ahora, estas son publicadas como paquetes en GitHub Container Registry (GCR), optimizando el flujo de trabajo y eliminando problemas anteriores como los tiempos de despliegue y las pruebas confusas.
La creación de estos paquetes personalizados requiere una cuidadosa gestión de dependencias, como el paquete ruby-all. GitHub ha aprendido que extender las clases de la biblioteca de consultas predeterminada les permite aprovechar funcionalidades existentes, resultando en consultas más concisas y mantenibles. Esto se complementa con un sistema de pruebas unitarias que verifica las consultas antes de su publicación, reduciendo significativamente los errores.
El proceso optimizado para publicar y actualizar consultas asegura un equilibrio entre la experiencia de desarrollo del equipo y la estabilidad del paquete publicado. Mediante un flujo de trabajo bien establecido, el equipo puede realizar pruebas unitarias, abrir solicitudes de incorporación de cambios para nuevas consultas y publicar actualizaciones en el GCR con eficiencia.
Las consultas personalizadas creadas incluyen patrones específicos de GitHub que no se encuentran en el paquete predeterminado, como la identificación de API de alto riesgo o la verificación de métodos de autorización en definiciones de API REST. Además, estas consultas también cumplen un propósito educativo, emitiendo alertas informativas a los ingenieros sin obstaculizar las solicitudes de cambios.
Por último, la capacidad de GitHub para realizar análisis de variantes con CodeQL subraya su compromiso con una seguridad proactiva. Esto no solo ayuda a identificar vulnerabilidades potenciales y patrones de código inseguros, sino que también proporciona resultados para un análisis más detallado por parte de ingenieros de seguridad. En resumen, CodeQL se ha transformado en un componente esencial para el equipo de seguridad de GitHub, facilitando un exhaustivo proceso de revisión de seguridad desde las etapas más tempranas del desarrollo.