Cómo GitHub Utiliza CodeQL Para Asegurar Su Plataforma

Elena Digital López

El equipo de ingeniería de seguridad de productos de GitHub ha dado un paso significativo hacia la mejora de la protección del código que compone su plataforma. La implementación de herramientas y prácticas de codificación seguras ha elevado el nivel de seguridad, siendo GitHub Advanced Security (GHAS) uno de los pilares de esta estrategia. Las innovaciones se centran en detectar, seguir y solucionar vulnerabilidades, así como en imponer estándares de codificación segura a gran escala.

Un componente crítico en este esfuerzo es CodeQL, el motor de análisis estático desarrollado por GitHub. Esta herramienta permite llevar a cabo evaluaciones de seguridad automatizadas al explorar el código como si se tratase de una base de datos, proporcionando una forma más sofisticada de análisis que las búsquedas de texto tradicionales. En un artículo reciente, el equipo de GitHub compartió detalles sobre el uso de CodeQL y ofreció lecciones valiosas para otras organizaciones, destacando cómo personalizar las consultas y llevar a cabo análisis de variantes para descubrir prácticas de programación potencialmente inseguras.

La implementación de CodeQL en GitHub se adapta a una variedad de configuraciones. Mientras que la mayoría de los más de 10,000 repositorios de la empresa utilizan una configuración predeterminada para revisiones de seguridad automáticas, algunos repositorios, como el extenso monolito de Ruby, requieren un enfoque más especializado mediante conjuntos de consultas personalizadas. Además, los ingenieros de GitHub realizan análisis de variantes en múltiples repositorios para facilitar una auditoría rápida y la detección de patrones específicos.

La evolución en la gestión de consultas CodeQL ha simplificado significativamente el flujo de trabajo. En lugar de publicar las consultas directamente en el repositorio monolítico, ahora se publican como un paquete en el GitHub Container Registry, agilizando el proceso y eliminando problemas previos como los extensos tiempos de despliegue y las complicaciones en las pruebas de cambios de salida.

Desarrollar estos paquetes de consultas personalizadas requiere una gestión cuidadosa de dependencias, como es el caso del paquete ruby-all. GitHub ha logrado ampliar las clases de la biblioteca de consultas predeterminadas, lo que permite crear consultas más concisas y fáciles de mantener. Esto se respalda con un sistema de pruebas unitarias que garantiza la calidad de las consultas antes de su publicación, minimizando errores.

El proceso optimizado para publicar y actualizar consultas asegura un equilibrio entre la estabilidad del paquete publicado y la experiencia de desarrollo del equipo. Mediante un flujo de trabajo bien definido, los ingenieros pueden abrir solicitudes de cambios para nuevas consultas, verificar mediante pruebas unitarias y realizar publicaciones en el GCR de forma más eficiente.

La gama de consultas personalizadas desarrolladas incluye desde la identificación de API de alto riesgo hasta la verificación de métodos de autorización en API REST. Asimismo, estas consultas tienen un fin educativo, proporcionando alertas informativas sin bloquear la incorporación de nuevos cambios.

Finalmente, la habilidad de realizar análisis de variantes con CodeQL reafirma el compromiso de GitHub con la seguridad proactiva. Esto permite identificar vulnerabilidades y patrones de código inseguros, brindando datos cruciales para el análisis por parte de los ingenieros. CodeQL se ha consolidado como un recurso esencial para el equipo de seguridad de productos de GitHub, contribuyendo no solo a la detección de riesgos, sino también a instaurar un proceso exhaustivo de revisión de seguridad desde las etapas iniciales del desarrollo.

Scroll al inicio