GitHub dio a conocer hace ya varios dias la adición de un sistema de aprendizaje automático experimental al servicio de escaneo de código para identificar tipos comunes de vulnerabilidades en el código. Con ello, la tecnología de análisis de código de GitHub basada en CodeQL se ha renovado y ahora utiliza el aprendizaje automático (ML) para encontrar posibles vulnerabilidades de seguridad en el código.
Y es que GitHub adquirió la tecnología para CodeQL como parte de la adquisición de Semmie. CodeQL es utilizado por equipos de investigación de seguridad para realizar análisis semánticos de código, y GitHub lo hizo de código abierto.
Con estos modelos, CodeQL puede identificar más flujos de datos de usuarios que no son de confianza y, por lo tanto, más vulnerabilidades de seguridad potenciales.
Se observa que el uso de un sistema de aprendizaje automático ha permitido ampliar significativamente la gama de problemas identificados, en cuyo análisis el sistema ahora no se limita a verificar patrones típicos y no está atado a marcos conocidos.
De los problemas identificados por el nuevo sistema, se mencionan errores que conducen a cross-site scripting (XSS), distorsión de rutas de archivos (por ejemplo, a través de la indicación «/..»), sustitución de consultas SQL y NoSQL.
El escaneo de código ahora puede encontrar más vulnerabilidades de seguridad potenciales al aprovechar un nuevo modelo de aprendizaje profundo. Esta función experimental está disponible en versión beta pública para repositorios de JavaScript y TypeScript en GitHub.com.
La nueva herramienta de GitHub fue lanzada como una versión beta pública gratuita para todos los usuarios, la función utiliza el aprendizaje automático y el aprendizaje profundo para escanear bases de código e identificar vulnerabilidades de seguridad comunes antes de que se envíe un producto.
La función experimental está actualmente disponible para todos los usuarios de la plataforma, incluidos los usuarios de GitHub Enterprise como una función de seguridad avanzada de GitHub, y se puede usar para proyectos escritos en JavaScript o TypeScript.
Con la rápida evolución del ecosistema de código abierto, hay una cola larga cada vez mayor de bibliotecas que se usan con menos frecuencia. Usamos ejemplos surgidos de las consultas CodeQL creadas manualmente para entrenar modelos de aprendizaje profundo para reconocer bibliotecas de código abierto, así como bibliotecas de código cerrado desarrolladas internamente.
La herramienta está diseñada para buscar las cuatro vulnerabilidades más comunes que afectan a los proyectos escritos en estos dos lenguajes: cross-site scripting (XSS), inyección de ruta, inyección NoSQL e inyección SQL.
El servicio de escaneo de código permite detectar vulnerabilidades en una etapa temprana de desarrollo al escanear cada operación «git push» en busca de posibles problemas.
El resultado se adjunta directamente a la solicitud de extracción. Anteriormente, la comprobación se realizaba mediante el motor CodeQL , que analiza patrones con ejemplos típicos de código vulnerable (CodeQL permite generar una plantilla de código vulnerable para detectar la presencia de una vulnerabilidad similar en el código de otros proyectos).
Con las nuevas capacidades de análisis, el escaneo de código puede generar aún más alertas para cuatro patrones de vulnerabilidad comunes: secuencias de comandos entre sitios (XSS), inyección de ruta, inyección NoSQL e inyección SQL. Juntos, estos cuatro tipos de vulnerabilidad representan muchas de las vulnerabilidades recientes (CVE) en el ecosistema de JavaScript/TypeScript, y mejorar la capacidad del escaneo de código para detectar tales vulnerabilidades al principio del proceso de desarrollo es clave para ayudar a los desarrolladores a escribir un código más seguro.
El nuevo motor de aprendizaje automático puede identificar vulnerabilidades previamente desconocidas porque no está vinculado a la iteración de patrones de código que describen vulnerabilidades específicas. El precio de tal oportunidad es un aumento en el número de falsos positivos en comparación con los controles basados en CodeQL.
Finalmente para quienes estén interesados en poder conocer más al respecto, pueden consultar los detalles en el siguiente enlace.
Ademas es importante mencionar que en la etapa de prueba, la nueva funcionalidad actualmente solo está disponible para repositorios con código JavaScript y TypeScript.