Skip to main content

Sobre alertas de digitalização de códigos

Aprenda os diferentes tipos de alertas de varredura de códigos e as informações que ajuda você a entender o problema nos destaques de cada alerta.

Code scanning está disponível para todos os repositórios públicos no GitHub.com. Para usar code scanning em um repositório privado pertencente a uma organização, você precisa ter um licença do GitHub Advanced Security. Para obter mais informações, confira "Sobre o GitHub Advanced Security".

Sobre os alertas de code scanning

Você pode configurar code scanning para verificar o código em um repositório usando a análise-padrão de CodeQL, uma análise de terceiros ou vários tipos de análise. Quando a análise for concluída, os alertas resultantes serão exibidos lado a lado na visualização de segurança do repositório. Os resultados de ferramentas de terceiros ou de consultas personalizadas podem não incluir todas as propriedades que você vê para alertas detectados pela análise-padrão CodeQL de GitHub. Para obter mais informações, confira "Como configurar code scanning para um repositório".

Por padrão, code scanning analisa seu código periodicamente no branch-padrão e durante os pull requests. Para obter informações sobre como gerenciar os alertas em uma solicitação de pull, confira "Como fazer a triagem de alertas da code scanning em solicitações de pull".

Sobre os detalhes do alerta

Cada alerta destaca um problema com o código e o nome da ferramenta que o identificou. Você pode ver a linha de código que acionou o alerta, bem como propriedades do alerta, por exemplo, a gravidade do alerta, a gravidade da segurança e a natureza do problema. Os alertas também informam quando o problema foi introduzido pela primeira vez. Para os alertas identificados pela análise do CodeQL , você também verá informações sobre como corrigir o problema.

O status e os detalhes na página de alerta refletem apenas o estado do alerta no branch padrão do repositório, mesmo que o alerta exista em outros branches. Você pode ver o status do alerta em branches não padrão na seção Branches afetados no lado direito da página de alerta. Se um alerta não existir no branch padrão, o status do alerta será exibido como "na solicitação de pull" ou "no branch" e será cinza.

Exemplo de alerta da code scanning

Se você configurar code scanning usando CodeQL, também poderá encontrar problemas no fluxo de dados no seu código. A análise do fluxo de dados encontra potenciais problemas de segurança no código, tais como: usar dados de forma insegura, passar argumentos perigosos para funções e vazar informações confidenciais.

Quando code scanning relata alertas de fluxo de dados, GitHub mostra como os dados se movem através do código. Code scanning permite que você identifique as áreas do seu código que vazam informações confidenciais que poderia ser o ponto de entrada para ataques de usuários maliciosos.

Sobre os níveis de gravidade

Os níveis de severidade do alerta podem ser Error, Warning e Note.

Se a code scanning estiver habilitada como uma verificação de solicitação de pull, a verificação falhará se detectar algum resultado com a severidade error. Você pode especificar o nível de gravidade dos alertas da verificação de código que causa uma falha de verificação. Para obter mais informações, confira "Como personalizar a code scanning".

Sobre níveis de gravidade de segurança

Code scanning exibe níveis de gravidade de segurança para alertas gerados por consultas de segurança. Os níveis de severidade de segurança podem ser Critical, High, Medium ou Low.

Para calcular a gravidade da segurança de um alerta, usamos dados de Pontuação do Sistema de Vulnerabilidade Comum (CVSS). O CVSS é uma estrutura aberta para comunicar as características e gravidade das vulnerabilidades de software, e é comumente usado por outros produtos de segurança para pontuar alertas. Para obter mais informações sobre como os níveis de severidade são calculados, confira esta postagem no blog.

Por padrão, os resultados da code scanning com a severidade de segurança Critical ou High causará uma falha de verificação. Você pode especificar qual nível de gravidade de segurança para resultados de code scanning causarão uma falha de verificação. Para obter mais informações, confira "Como personalizar a code scanning".

Sobre as origens de análise

Você pode executar várias configurações de análise de código em um repositório usando diferentes ferramentas e tendo como destino diferentes linguagens ou áreas do código. Cada configuração da verificação de código é a origem de análise de todos os alertas gerados. Por exemplo, um alerta gerado por meio da análise padrão do CodeQL com o GitHub Actions terá uma origem de análise diferente de um alerta gerado externamente e carregado por meio da API de verificação de código.

Se você usar várias configurações para analisar um arquivo, os problemas detectados pela mesma consulta serão relatados como alertas com várias origens de análise. Se um alerta tiver mais de uma origem de análise, um ícone será exibido ao lado de qualquer branch relevante na seção Branches afetados no lado direito da página de alerta. Posicione o cursor sobre o ícone para ver os nomes de cada origem de análise e o status do alerta da origem de análise. Veja também o histórico de quando os alertas apareceram em cada origem de análise na linha do tempo da página de alertas. Se um alerta tiver apenas uma origem de análise, nenhuma informação sobre as origens de análise será exibida na página de alertas.

Alerta da verificação de código com várias origens de análise

Observação: às vezes, um alerta da verificação de código é exibido como corrigido para uma origem de análise, mas ainda fica em aberto para uma segunda origem de análise. Resolva isso executando novamente a segunda configuração da verificação de código para atualizar o status do alerta dessa origem de análise.

Sobre etiquetas para alertas não encontrados no código do aplicativo

GitHub Enterprise Cloud atribui uma etiqueta de categoria para alertas que não são encontrados no código do aplicativo. A etiqueta está relacionado à localização do alerta.

  • Gerado: código gerado pelo processo de build
  • Teste: código de teste
  • Biblioteca: biblioteca ou código de terceiros
  • Documentação: documentação

Code scanning categoriza arquivos por caminho do arquivo. Você não pode categorizar manualmente os arquivos de origem.

Aqui está um exemplo da lista de alerta de code scanning de um alerta marcado como ocorrência no código da biblioteca.

Código digitalizando o alerta de biblioteca na lista

Na página de alertas, você poderá ver que o caminho do arquivo é marcado como o código da biblioteca (rótulo Library).

Código digitalizando as informações do alerta de biblioteca

Sobre alertas experimentais

Observação: os alertas experimentais da code scanning são criados por meio da tecnologia experimental na ação do CodeQL. No momento, esse recurso está disponível como uma versão beta para o código JavaScript e está sujeito a alterações.

Em repositórios que executam code scanning que usam a ação de CodeQL, você pode ver alguns alertas que estão marcados como experimentais. Esses são os alertas que foram encontrados usando um modelo de aprendizado de máquina para estender os recursos de uma consulta existente CodeQL.

Alerta experimental de digitalização de código na lista

Benefícios de usar modelos de aprendizado de máquina para estender consultas

As consultas que usam modelos de aprendizado de máquina são capazes de encontrar vulnerabilidades no código que foi escrito usando estruturas e bibliotecas que o autor de consulta original não incluiu.

Cada uma das consultas de segurança para CodeQL identifica o código que está vulnerável a um tipo específico de ataque. Os pesquisadores de segurança escrevem as perguntas e incluem as bibliotecas e estruturas mais comuns. Por isso, cada consulta existente encontra utilizações vulneráveis de estruturas e bibliotecas comuns. No entanto, os desenvolvedores utilizam várias estruturas e bibliotecas diferentes, e uma consulta mantida manualmente não pode incluir todas elas. Consequentemente, as consultas mantidas manualmente não proporcionam cobertura a todos os quadros e bibliotecas.

CodeQL usa um modelo de aprendizado de máquina para estender uma consulta de segurança existente a fim de cobrir uma gama mais ampla de estruturas e bibliotecas. O modelo de aprendizado de máquina é treinado para detectar problemas no código que nunca foi visto antes. As perguntas que utilizam o modelo encontrarão resultados para quadros e bibliotecas que não estão descritas na consulta original.

Alertas identificados que usam aprendizado de máquina

Os alertas encontrados que usam um modelo de aprendizado de máquina são marcados como "Alertas experimentais" para mostrar que a tecnologia está em desenvolvimento ativo. Esses alertas têm uma taxa mais alta de resultados falsospositivo do que as consultas em que se baseiam. O modelo de aprendizado de máquina melhorará com base nas ações do usuário como, por exemplo, marcar um resultado ruim como um falso-positivo ou a resolução de um bom resultado.

Detalhes do alerta experimental da digitalização de código

Habilitando alertas experimentais

O conjunto de consultas padrão de CodeQL não inclui nenhuma consulta que use o aprendizado de máquina para gerar alertas experimentais. Para executar consultas de aprendizado de máquina durante code scanning, você precisa executar as consultas adicionais contidas em um dos seguintes conjuntos de consulta.

Conjunto de consultasDescrição
security-extendedConsultas do pacote padrão, além de consultas de gravidade e precisão inferiores
security-and-qualityConsultas de security-extended, além de consultas de capacidade de manutenção e confiabilidade

Quando você atualizar seu fluxo de trabalho para executar um conjunto de consultas adicional, isso aumentará o tempo de análise.

- uses: github/codeql-action/init@v2
  with:
    # Run extended queries including queries using machine learning
    queries: security-extended

Para obter mais informações, confira "Como personalizar a code scanning".

Desabilitando alertas experimentais

A maneira mais simples de desabilitar consultas que usam o machine learning para gerar alertas experimentais é interromper a execução do conjunto de consultas security-extended ou security-and-quality. No exemplo acima, você removerá o comentário da linha queries. Caso você precise continuar executando o pacote security-extended ou security-and-quality e as consultas de machine learning estão causando problemas, abra um tíquete com o suporte do GitHub com os detalhes a seguir.

  • Título do tíquete: "code scanning: remoção dos alertas experimentais beta"
  • Especifique os detalhes dos repositórios ou organizações afetados
  • Solicite um encaminhamento para a equipe de engenharia