GitHub revelado há vários dias, a adição de experimentos de um sistema de aprendizado de máquinal para serviço de digitalização de código para identificar tipos comuns de vulnerabilidades No código. Com isso, a tecnologia de análise de código baseada em CodeQL do GitHub foi reformulada e agora usa machine learning (ML) para encontrar possíveis vulnerabilidades de segurança no código.
E é esse GitHub adquiriu a tecnologia para CodeQL como parte da aquisição da Semmie. O CodeQL é usado por equipes de pesquisa de segurança para realizar análises semânticas de código, e o GitHub o tornou de código aberto.
Com esses modelos, o CodeQL pode identificar mais fluxos de dados de usuários não confiáveis e, portanto, mais vulnerabilidades de segurança em potencial.
Observa-se que a utilização de um sistema de aprendizado de máquina possibilitou ampliar significativamente o leque de problemas identificados, em cuja análise o sistema passou a não se limitar a verificar padrões típicos e não estar vinculado a frameworks conhecidos.
Dos problemas identificados pelo novo sistema, são mencionados erros que levam a cross-site scripting (XSS), distorção de caminhos de arquivos (por exemplo, através da indicação "/.."), substituição de consultas SQL e NoSQL.
A verificação de código agora pode encontrar mais vulnerabilidades de segurança em potencial, aproveitando um novo modelo de aprendizado profundo. Esse recurso experimental está disponível em versão beta pública para repositórios JavaScript e TypeScript no GitHub.com.
A nova ferramenta do GitHub fue lançado como uma versão beta pública gratuita Para todos os usuários, o recurso usa aprendizado de máquina e aprendizado profundo para escanear bases de código e identificar vulnerabilidades de segurança comuns antes que um produto seja enviado.
O recurso experimental está atualmente disponível para todos os usuários da plataforma, incluindo usuários do GitHub Enterprise como um recurso de segurança avançada do GitHub, e pode ser usado para projetos escritos em JavaScript ou TypeScript.
Com a rápida evolução do ecossistema de código aberto, há uma cauda longa cada vez maior de bibliotecas que são usadas com menos frequência. Usamos exemplos de consultas CodeQL criadas manualmente para treinar modelos de aprendizado profundo para reconhecer bibliotecas de código aberto, bem como bibliotecas de código fechado desenvolvidas internamente.
Ferramenta é projetado para procurar as quatro vulnerabilidades mais comuns que afetam projetos escritos nestas duas linguagens: cross-site scripting (XSS), injeção de rota, injeção de NoSQL e injeção de SQL.
O serviço de verificação de código permite detectar vulnerabilidades em um estágio inicial de desenvolvimento, verificando cada operação de git push em busca de possíveis problemas.
O resultado é anexado diretamente ao pull request. Anteriormente, a verificação era feita usando o mecanismo CodeQL, que analisa padrões com exemplos típicos de código vulnerável (o CodeQL permite gerar um modelo de código vulnerável para detectar a presença de uma vulnerabilidade semelhante no código de outros projetos).
Com novos recursos de análise, o Code Scanning pode gerar ainda mais alertas para quatro padrões de vulnerabilidade comuns: Cross-Site Scripting (XSS), Path Injection, NoSQL Injection e SQL Injection. Juntos, esses quatro tipos de vulnerabilidade representam muitas das vulnerabilidades recentes (CVEs) no ecossistema JavaScript/TypeScript, e melhorar a capacidade de varredura de código para detectar essas vulnerabilidades no início do processo de desenvolvimento é fundamental para ajudar os desenvolvedores a escrever códigos mais seguros.
O novo mecanismo de aprendizado de máquina pode identificar vulnerabilidades anteriormente desconhecidas porque não está vinculado à iteração de padrões de código que descrevem vulnerabilidades específicas. O preço de tal oportunidade é um aumento no número de falsos positivos em comparação com verificações baseadas em CodeQL.
Finalmente para aqueles interessados em saber mais sobre isso, você pode verificar os detalhes no link a seguir.
Também é importante mencionar que, na fase de testes, a nova funcionalidade está atualmente disponível apenas para repositórios com código JavaScript e TypeScript.