GitHub: Uso de 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 en la protección del código que sustenta su plataforma al desarrollar e implementar herramientas y prácticas de codificación seguras. En el centro de esta estrategia se encuentra GitHub Advanced Security (GHAS), un recurso esencial que permite identificar, rastrear y corregir vulnerabilidades, así como establecer estándares de codificación segura de manera masiva. Un componente clave de esta estructura es CodeQL, un potente motor de análisis estático que facilita evaluaciones automatizadas de seguridad, proporcionando un análisis del código semejante al manejo de una base de datos.

CodeQL ha demostrado ser más eficaz que las búsquedas de texto convencionales, ya que revela problemas de programación que podrían pasar inadvertidos. En un artículo reciente, el equipo de GitHub compartió su experiencia y aprendizajes en el uso de CodeQL, ofreciendo valiosas lecciones para otras organizaciones que deseen mejorar su seguridad. El documento aborda la creación y manejo de paquetes de consultas personalizadas, el desarrollo de nuevas consultas y el análisis de variantes para identificar prácticas inseguras en la programación.

Dentro de GitHub, CodeQL se utiliza en diversas configuraciones. En la mayoría de los más de 10,000 repositorios, la configuración predeterminada realiza revisiones automáticas de seguridad en las pull requests. Sin embargo, para proyectos más complejos, como el gran monolito de Ruby, se requiere un enfoque más especializado con conjuntos de consultas personalizados. Además, mediante el análisis de variantes en varios repositorios, el equipo puede auditar de manera rápida y detectar patrones específicos.

Con el tiempo, la gestión de las consultas CodeQL ha evolucionado en GitHub. Este proceso, que inicialmente implicaba publicar directamente en el repositorio monolítico de GitHub, ahora se realiza a través del GitHub Container Registry (GCR), optimizando el flujo de trabajo y eliminando dificultades previas como tiempos de despliegue extendidos y pruebas problemáticas.

La elaboración de paquetes de consultas personalizadas incluye importantes consideraciones sobre la gestión de dependencias, especialmente con el paquete «ruby-all». GitHub ha encontrado beneficios en expandir las clases de la biblioteca de consultas predeterminadas, lo que permite generar consultas más eficientes y fáciles de mantener. Este enfoque se complementa con un sistema de pruebas unitarias que garantiza la precisión de las consultas antes de su publicación, minimizando errores.

El proceso de publicación y actualización se ha mejorado para equilibrar la experiencia de desarrollo con la estabilidad del paquete publicado. Un flujo de trabajo eficiente permite al equipo abrir solicitudes de cambios para nuevas consultas, efectuar pruebas y publicar actualizaciones en el GCR de forma ágil.

Las consultas personalizadas abordan patrones específicos presentes en GitHub que no están incluidos en el paquete de consulta estándar. Estas consultas identifican desde API de alto riesgo hasta métodos de autorización en definiciones de API REST. También tienen un objetivo educativo, proporcionando alertas informativas a los ingenieros sin bloquear la incorporación de cambios.

La capacidad de realizar análisis de variantes con CodeQL consolida el compromiso de GitHub con la seguridad proactiva. Este método permite identificar vulnerabilidades potenciales y patrones de código inseguros, generando resultados que son analizados por ingenieros de seguridad. En definitiva, CodeQL se ha transformado en un recurso vital para el equipo de seguridad de productos de GitHub, no solo por su capacidad para detectar vulnerabilidades, sino también por facilitar un exhaustivo proceso de revisión de seguridad que comienza en las etapas iniciales del desarrollo.

Scroll al inicio