En el dinámico mundo de la seguridad informática, GitHub se ha posicionado como una plataforma esencial para investigadores de seguridad. A través del uso de herramientas como el escaneo de código, CodeQL, GitHub Codespaces y la presentación de vulnerabilidades de manera privada, GitHub proporciona un entorno propicio para la identificación y mitigación de vulnerabilidades en el software de código abierto.
El Laboratorio de Seguridad de GitHub es un claro ejemplo de cómo se puede realizar una investigación de seguridad de manera eficiente y rápida dentro de la misma plataforma. Este laboratorio utiliza productos y funciones de GitHub, como el escaneo de código y CodeQL, para descubrir, verificar y divulgar vulnerabilidades en el software de código abierto (OSS).
Uno de los primeros pasos en el proceso es encontrar un «objetivo interesante». En este contexto, un objetivo interesante puede variar según los filtros y criterios establecidos por el investigador, como el lenguaje de programación del proyecto, la superficie que expone o la cantidad de usuarios afectados en caso de una vulnerabilidad. GitHub facilita esta tarea mediante herramientas como la búsqueda de código, que permite buscar métodos o bibliotecas específicas en los repositorios públicos de GitHub con filtros de lenguaje y expresiones regulares.
Para evaluar la importancia de un proyecto, se utiliza la puntuación de criticidad del Open Source Security Foundation (OpenSSF), que define la influencia e importancia de un proyecto en una escala de 0 a 1. Esta puntuación se basa en varios factores, como la frecuencia de actualizaciones del proyecto y el número de contribuyentes. El Laboratorio de Seguridad de GitHub utiliza esta puntuación para priorizar sus análisis en proyectos de alto perfil.
Una vez identificado el objetivo, el siguiente paso es crear un entorno de trabajo limpio y temporal para realizar auditorías de seguridad. Aquí es donde entran en juego GitHub Codespaces, proporcionando entornos de desarrollo en la nube, instantáneos y personalizables. Esta herramienta permite a los investigadores configurar rápidamente un entorno seguro para pruebas y depuración, facilitando el análisis detallado del comportamiento del código.
Dentro de este entorno, los investigadores pueden utilizar CodeQL, el motor de análisis de código estático de GitHub, que permite interrogar el código como si fuera una base de datos. CodeQL ayuda a detectar problemas de seguridad y a priorizar las correcciones necesarias mediante un análisis semántico y flujo de datos.
En el caso de encontrar una vulnerabilidad, como se ejemplificó con la deserialización de datos controlados por el usuario utilizando PyYaml en el proyecto Frigate, se puede reportar de manera privada a los mantenedores del proyecto a través de la función de reporte privado de vulnerabilidades de GitHub. Esta herramienta facilita la comunicación segura y colaborativa entre investigadores y mantenedores, permitiendo resolver las vulnerabilidades de manera efectiva y con discreción.
En resumen, GitHub ofrece un arsenal de herramientas que no solo facilitan la labor de los investigadores de seguridad, sino que también contribuyen a la seguridad del ecosistema de software de código abierto en general. Desde la identificación y escaneo de código hasta la creación de entornos de prueba y la comunicación privada de vulnerabilidades, GitHub se posiciona como una plataforma integral para la investigación de seguridad. ¡Feliz coding y feliz investigación!