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 puesto en marcha un conjunto de herramientas y prácticas de codificación que buscan reforzar la protección del código en su plataforma. Un elemento clave de esta estrategia es GitHub Advanced Security (GHAS), que se utiliza para identificar, rastrear y resolver vulnerabilidades, así como para aplicar estándares de codificación segura a gran escala. Dentro de esta metodología, destaca CodeQL, un motor de análisis estático que permite realizar evaluaciones de seguridad automáticas, haciendo posible un análisis detallado del código similar al manejo de una base de datos.

A diferencia de las tradicionales búsquedas de texto, CodeQL ofrece un enfoque más sofisticado, permitiendo descubrir problemas de seguridad que podrían pasar desapercibidos. Un reciente informe de GitHub describe el uso de CodeQL y proporciona lecciones que podrían ser útiles para otras organizaciones del sector. En él se menciona la creación y gestión de paquetes de consultas personalizadas, así como el desarrollo de consultas específicas para identificar prácticas de programación inseguras.

En GitHub, CodeQL se implementa en diferentes configuraciones. La mayoría de sus más de 10,000 repositorios utilizan una configuración estándar que ejecuta revisiones de seguridad automáticas en las solicitudes de incorporación de cambios. Para casos especiales, como su sistema monolítico basado en Ruby, se emplean conjuntos de consultas personalizadas. También se realiza un análisis de variantes entre múltiples repositorios, facilitando la auditoría rápida y la detección de patrones críticos.

La gestión de las consultas CodeQL en GitHub ha evolucionado significativamente. Antes, las consultas se alojaban directamente en el repositorio monolítico, lo que complicaba el flujo de trabajo. Actualmente, se publican como un paquete en el GitHub Container Registry (GCR), lo que ha simplificado considerablemente el proceso y eliminado problemas previos como las confusiones en pruebas y despliegues.

Este nuevo enfoque en la creación de paquetes de consultas personalizadas requiere considerar la gestión de dependencias, como el paquete ruby-all. GitHub ha encontrado valor al expandir las clases de la biblioteca de consultas, aprovechando funcionalidades existentes para generar consultas más concisas. Un sistema de pruebas unitarias acompaña esta consolidación, verificando las consultas antes de su lanzamiento para minimizar errores.

La optimización en el proceso de publicación y actualización de estas consultas ha encontrado un equilibrio entre la experiencia del desarrollo y la estabilidad del paquete final. Con un flujo de trabajo bien definido, el equipo puede introducir nuevas consultas, realizar pruebas y efectuar actualizaciones en el GCR de forma más ágil.

GitHub desarrolla una variedad de consultas personalizadas que abarcan patrones únicos que no están presentes en los paquetes de consulta estándar. Estas consultas no solo buscan identificar API de alto riesgo o verificar métodos de autorización en las definiciones de API REST, también se emplean con fines educativos, proporcionando alertas informativas a los ingenieros sin obstaculizar el proceso de revisión o implementación de cambios.

Finalmente, la capacidad de GitHub para llevar a cabo análisis de variantes con CodeQL subraya su compromiso con una seguridad proactiva. Así se logran identificar vulnerabilidades y patrones de código inseguros para su revisión por parte de ingenieros especializados. CodeQL se ha consolidado como un recurso indispensable, no solo en la detección de vulnerabilidades, sino también en la puesta en marcha de un proceso comprensivo de revisión de seguridad que comienza desde las primeras fases del desarrollo.