Cartoon rock climber using proper security techniques while climbing a rock wall

Ajuste o escopo de teste com CodeQL

Nicholas Liffen
Nicholas Liffen // Director, GitHub Advanced Security // GitHub

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.

Phil Wright-Christie
Phil Wright-Christie // Lead DevOps Engineer // KPMG

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.