Ajuste o escopo de teste com CodeQL
Além de adicionar instruções de criação, que abordamos no último guia, excluir diretórios e alterar as consultas executadas são as alterações de configuração mais comuns que os usuários fazem. A alteração de consultas normalmente é feita para expandir ou restringir o escopo dos testes. Normalmente, vemos organizações excluírem diretórios contendo código externo que podem tomar poucas medidas para corrigir. Também teremos notícias da KPMG novamente.
Neste guia, você aprenderá:
Como excluir arquivos ou pastas de uma varredura de CodeQL
Como alterar quais consultas são executadas como parte de uma verificação varredura de CodeQL
As diferenças entre os três conjuntos de consultas padrão incluídos no CodeQL
1. Exclua um diretório da verificação.
Vamos começar excluindo os arquivos de teste do seu repositório Web Goat da varredura do CodeQL.
Abra o arquivo de fluxo de trabalho codeql.yml
do diretório /.github/
do repositório Web Goat
Encontre a seção etiquetada # Initializes the CodeQL tools for scanning
.
Em languages: ${{ matrix.language }}
adicione o seguinte:
config: |
paths-ignore:
- '**/*.test.js'
Recomendamos manter o menor número possível de pastas a serem excluídas. Pode ser tentador excluir pastas com código de terceiros, pois não podemos resolver problemas nelas. Porém, em última análise, é melhor saber as possíveis vulnerabilidades, mesmo que não seja possível corrigi-las diretamente. Do nosso ponto de vista, é melhor fazer o máximo possível de varreduras.
2. Altere os pacotes de consulta.
O CodeQL executa consultas para descobrir possíveis riscos de segurança ou problemas de qualidade. Este é um exemplo de uma consulta JavaScript CodeQL simples que encontra funções com mais de 10 parâmetros:
import javascript
from Function f
where f.getNumParameter() > 10
select f
Os pacotes de consulta CodeQL fornecem uma maneira de selecionar consultas, com base em metadados (por exemplo, seu nome de arquivo ou localização no disco/em um pacote CodeQL). Os pacotes do CodeQL são coleções de consultas compiladas usadas para criar, compartilhar e executar consultas e bibliotecas CodeQL. Os pacotes de consulta definem quais consultas são executadas como parte de um pacote de CodeQL. Por exemplo, se você quiser modificar as consultas executadas e não modificar as consultas em si, use um pacote. Se você tiver consultas personalizadas, extensões de dados etc., use um pacote.
Vamos apenas usar os conjuntos padrão por enquanto. O CodeQL tem três conjuntos de consultas integrados diferentes que executam uma variedade de pacotes de consulta diferentes: code-scanning (default)
, security-extended
, e security-and-quality
.
Você deve usar o conjunto de varredura de código padrão se desejar apenas resultados de alta precisão e vulnerabilidades de alta gravidade. Se você estiver disposto a sacrificar alguma precisão para detectar mais vulnerabilidades, incluindo muitos problemas de gravidade menor, use security-extended
. Use security-and-quality
quando você deseja executar tudo, desde consultas de segurança estendida até algumas consultas de qualidade que se concentram mais na estrutura e na capacidade de manutenção.
Vamos habilitar security-and-quality
agora. Abaixo da linha que você acabou de adicionar, adicione:
queries:
- uses: security-and-quality
É possível especificar outras consultas, pacotes de consulta e conjuntos de consultas da mesma maneira.
A seção inteira do arquivo agora deve ficar assim:
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
config: |
paths-ignore:
- '**/*.test.js'
queries:
- uses: security-and-quality
3. Verifique os resultados.
Após a conclusão do trabalho de CodeQL, vá para a guia Security dos repositórios e selecione a seção Code scanning do menu à esquerda. Agora você deve obter ainda mais resultados. Como sempre, se o trabalho falhar, verifique novamente o espaçamento e o recuo no arquivo YAML.
A seguir: Amplie seus testes com ferramentas de terceiros com varredura de código GitHub
Agora vamos ver as alterações de configuração mais comuns que você pode querer fazer no CodeQL. Existem muitas outras opções de configuração disponíveis na documentação. No módulo avançado, trabalharemos com um arquivo de configuração externo que uma equipe de segurança pode manter. Mas, por enquanto, vamos passar para o nosso próximo guia.
Até agora, usamos apenas a varredura de código para visualizar os resultados do CodeQL. Porém, a varredura de código também pode exibir resultados de ferramentas de terceiros, fornecendo uma interface única para trabalhar com uma ampla variedade de ferramentas de segurança.