CodeQL é o mecanismo de análise de código desenvolvido por GitHub para automatizar verificações de segurança. Você pode analisar seu código usando CodeQL e exibir os resultados como alertas de code scanning.
Existem três maneiras principais de usar a análise do CodeQL para code scanning:
-
Use a configuração padrão para definir rapidamente a análise do CodeQL para a code scanning no seu repositório. A configuração padrão escolhe automaticamente as linguagens a serem analisadas, o pacote de consultas a ser executado e os eventos que disparam as verificações. Se preferir, selecione manualmente o conjunto de consultas a ser executado e as linguagens a serem analisadas. Depois de habilitar o CodeQL, o GitHub Actions vai disparar execuções de fluxo de trabalho para verificar seu código. Para obter mais informações, confira "Como definir a configuração padrão da verificação de código".
-
Use a configuração avançada para adicionar o fluxo de trabalho do CodeQL ao seu repositório. Isso gera um arquivo de fluxo de trabalho personalizável que usa o github/codeql-action para executar o CodeQL CLI. Para obter mais informações, confira "Como definir a configuração avançada para verificação de código".
-
Execute a CodeQL CLI diretamente em um sistema de CI externo e faça o upload dos resultados em GitHub. Para obter mais informações, confira "Usando a varredura de código com seu sistema de CI existente".
Para mais informações sobre os alertas da code scanning confira "Sobre alertas de digitalização de códigos."
Sobre o CodeQL
CodeQL é uma linguagem de programação e ferramentas associadas que tratam o código como dados. Ele foi criado explicitamente para facilitar a análise do código e encontrar possíveis vulnerabilidades no código com maior confiança do que os analisadores estáticos tradicionais.
- Você gera um banco de dados de CodeQL para representar a sua base de código.
- Em seguida, você executa consultas de CodeQL nesse banco de dados para identificar problemas na base de código.
- Os resultados da consulta são exibidos como alertas de code scanning em GitHub quando você usa CodeQL com code scanning.
O CodeQL dá suporte a linguagens compiladas e interpretadas e pode encontrar vulnerabilidades e erros no código escrito nas linguagens compatíveis.
- C/C++
- C#
- Ir
- Java/Kotlin
- JavaScript/TypeScript
- Python
- Ruby
- Swift
Observações:
- Use
java-kotlin
para analisar o código escrito em Java, Kotlin ou ambos. - Use
javascript-typescript
para analisar código escrito em Java, TypeScript ou ambos.
Para obter mais informações, confira a documentação no site do CodeQL: "Linguagens e estruturas compatíveis".
Modelar estruturas personalizadas ou de nicho
Especialistas em GitHub, pesquisadores de segurança e colaboradores da comunidade criam bibliotecas para modelar o fluxo de dados nas estruturas e bibliotecas mais usadas. Se você usar dependências personalizadas que não são modeladas, poderá usar a extensão CodeQL para Visual Studio Code para criar modelos dessas dependências e usá-los para ampliar sua análise. Para obter mais informações, confira "Usar o editor de modelos do CodeQL".
Consultas CodeQL
Especialistas, pesquisadores de segurança e contribuidores da comunidade GitHub escrevem e mantêm as consultas padrão de CodeQL usadas por code scanning. As consultas são atualizadas regularmente para melhorar a análise e reduzir quaisquer resultados falsos positivos.
Escrevendo suas próprias consultas
As consultas são de software livre, portanto, você pode exibir e contribuir para as consultas no repositório github/codeql . Para obter mais informações, confira "Sobre as consultas do CodeQL na documentação do CodeQL.
Executar consultas adicionais
Se estiver verificando o código com a configuração avançada ou com um sistema de CI externo, execute consultas adicionais como parte da análise.
Essas consultas precisam pertencer a um pacote de consultas do CodeQL ou a um pacote do CodeQL em um repositório.
-
Quando um pacote de consultas do CodeQL é publicado no GitHub Container registry, todas as dependências transitivas exigidas pelas consultas e um cache de compilação são incluídos no pacote. Isto melhora o desempenho e garante que a execução de consultas no pacote dê resultados idênticos toda vez até que você fizer a autalização para uma nova versão do pacote ou para o CLI.
-
Os pacotes de consultas do CodeQL podem ser baixados de vários registros de contêiners de GitHub. Para obter mais informações, confira "Personalizando a configuração avançada para varredura de código".
Para obter mais informações, confira "Como personalizar a análise com pacotes CodeQL".