Publicamos atualizações frequentes em nossa documentação, e a tradução desta página ainda pode estar em andamento. Para obter as informações mais recentes, acesse a documentação em inglês. Se houver problemas com a tradução desta página, entre em contato conosco.

Solução de problemas de detecção de dependências vulneráveis

Se as informações sobre dependências relatadas por GitHub não são o que você esperava, há uma série de pontos a considerar, e várias coisas que você pode verificar.

Neste artigo

Did this doc help you?

Help us make these docs great!

All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.

Make a contribution

Ou, learn how to contribute.

Os resultados da detecção de dependências relatados pelo GitHub podem ser diferentes dos resultados retornados por outras ferramentas. Existem boas razões para isso e é útil entender como GitHub determina as dependências para o seu projeto.

Por que algumas dependências parecem estar faltando?

O GitHub gera e exibe dados de dependência de maneira diferente de outras ferramentas. Consequentemente, se você usou outra ferramenta para identificar dependências, quase certamente verá resultados diferentes. Considere o seguinte:

  • Banco de Dados Consultivo GitHub é uma das fontes de dados que GitHub usa para identificar dependências vulneráveis. É um banco de dados gratuito e curado com informações sobre vulnerabilidade para ecossistemas de pacote comum em GitHub. Inclui tanto dados relatados diretamente para GitHub de Consultoria de segurança GitHub quanto os feeds oficiais e as fontes comunitárias. Estes dados são revisados e curados por GitHub para garantir que informações falsas ou não acionáveis não sejam compartilhadas com a comunidade de desenvolvimento. Para obter mais informações, consulte "Pesquisar vulnerabilidades de segurança no Banco de Dados Consultivo GitHub" e "Sobre Consultoria de segurança GitHub".

  • O gráfico de dependências analisa todos os arquivos conhecidos de manifesto de pacote no repositório de um usuário. Por exemplo, para o npm, ele irá analisar o arquivo package-lock.json. Ele constrói um gráfico de todas as dependências do repositório e dependências públicas. Isso acontece quando você habilita o gráfico de dependências e quando alguém faz push para o branch-padrão, e inclui commits que fazem alterações em um formato de manifesto compatível. Para obter mais informações, consulte "Sobre o gráfico de dependência".

  • Dependabot verifica qualquer push, para o branch-padrão, que contém um arquivo de manifesto. Quando um novo registro de vulnerabilidade é adicionado, ele verifica todos os repositórios existentes e gera um alerta para cada repositório vulnerável. Os alertas do Dependabot são agregados ao nível do repositório, em vez de criar um alerta por vulnerabilidade. Para obter mais informações, consulte "Sobre alertas para dependências vulneráveis"

  • Atualizações de segurança do GitHub Dependabot são acionados quando você recebe um alerta de segurança sobre uma dependência vulnerável em seu repositório. GitHub cria, automaticamente, uma pull request no seu repositório de modo a atualizar a dependência vulnerável para a mínima versão segura possível para evitar a vulnerabilidade. Para obter mais informações, consulte "Configurando Atualizações de segurança do GitHub Dependabot."

    O Dependabot não faz a varredura de repositórios de forma programada, mas sim, quando algo muda. Por exemplo, uma varredura é acionada quando uma nova dependência é adicionada (GitHub verifica isso em cada push), ou quando uma nova vulnerabilidade é descoberta e adicionada ao banco de dados consultivo.

Por que não recebo alertas de vulnerabilidade em alguns ecossistemas?

O GitHub limita seu suporte a alertas de vulnerabilidade a um conjunto de ecossistemas onde podemos fornecer dados de alta qualidade e relevantes. Vulnerabilidades sanadas no Banco de Dados Consultivo GitHub, o gráfico de dependência, alertas Dependabot e as atualizações de segurança Dependabot são fornecidas para vários ecossistemas, incluindo o Maven do Java, o npm do JavaScript e o Yarn, NuGet do NET, pip do Python, RubyGems do Ruby e Composer do PHP. Nós continuaremos a adicionar suporte para mais ecossistemas ao longo do tempo. Para uma visão geral dos ecossistemas de pacotes suportados por nós, consulte "Sobre o gráfico de dependências".

Vale a pena notar que a GitHub Consultoria de Segurança pode existir para outros ecossistemas. As informações em uma consultoria de segurança são fornecidas pelos mantenedores de um determinado repositório. Estes dados não são curados da mesma forma que as informações relativas aos ecossistemas suportados.

Verificar: A vulnerabilidade não capturada se aplica a um ecossistema não suportado?

O gráfico de dependências só encontra dependências nos manifestos e nos arquivos de bloquei?

O gráfico de dependências inclui informações sobre dependências explicitamente declaradas em seu ambiente. Ou seja, dependências que são especificadas em um manifesto ou um arquivo de bloqueio. O gráfico de dependências, geralmente, também inclui dependências transitivas, mesmo quando não são especificadas em um arquivo de travamento analisando as dependências das dependências em um arquivo de manifesto.

Os alertas Dependabot o aconselham sobre dependências que você deve atualizar, incluindo dependências transitivas, onde a versão pode ser determinada a partir de um manifesto ou de um arquivo de bloqueio. As atualizações de segurança Dependabot apenas sugerem uma mudança onde ela pode "corrigir" diretamente a dependência, ou seja, quando estas são:

  • Dependências diretas, que são definidas explicitamente em um manifesto ou arquivo de bloqueio
  • Dependências transitórias declaradas em um arquivo de bloqueio

O gráfico de dependências não inclui dependências de "soltas". As dependências "soltas" são arquivos individuais copiados de outra fonte e verificados no repositório diretamente ou dentro de um arquivo (como um arquivo ZIP ou JAR), em vez de ser referenciadas pelo manifesto ou arquivo de bloqueio do gerenciador de pacotes.

Verifique: A vulnerabilidade não detectada para um componente não especificado no manifesto ou no arquivo de bloqueio do repositório?

O gráfico de dependências detecta dependências especificadas usando variáveis?

O gráfico de dependências analisa como são carregados para GitHub. O gráfico de dependência não tem acesso ao ambiente de construção do projeto. Portanto, ele não pode resolver variáveis usadas dentro dos manifestos. Se você usar variáveis dentro de um manifesto para especificar o nome, ou mais comumente, a versão de uma dependência, essa dependência não será incluída no gráfico de dependências.

Verifique: A dependência ausente é declarada no manifesto usando uma variável para seu nome ou versão?

Existem limites que afetam os dados do gráfico de dependências?

Sim, o gráfico de dependências tem duas categorias de limites:

  1. Limites de processamento

    Eles afetam o gráfico de dependências exibido dentro de GitHub e também impedem que sejam criados alertas do Dependabot.

    Manifestos com tamanho superior a 0.5 MB são processados apenas para contas corporativas. Para as outras contas, os manifestos com tamanho superior a 0,5 MB são ignorados e não criarão alertas de Dependabot.

    Por padrão, o GitHub não processará mais de 20 manifestos por repositório. Não são criados alertas de Dependabot para manifestos acima deste limite. Se você precisar aumentar o limite, entre em contato com GitHub Support or GitHub Premium Support.

  2. Limites de visualização

    Eles afetam o que é exibido no gráfico de dependências dentro de GitHub. No entanto, eles não afetam os alertas de Dependabot que foram criados.

    A exibição de dependências do gráfico de dependências em um repositório só exibe 100 manifestos. De modo geral, isso é adequado, já que é significativamente maior do que o limite de processamento descrito acima. Em situações em que o limite de processamento é superior a 100, os alertas de Dependabot são criados para quaisquer manifestos que não são mostrados dentro de GitHub.

Verifique: A dependência que falta está em um arquivo de manifesto superior a 0,5 MB ou em um repositório com um grande número de manifestos?

O Dependabot gera alertas de vulnerabilidades que são conhecidas há muitos anos?

O Banco de Dados Consultivo GitHub foi lançado em novembro de 2019 e preencheu, inicialmente, a inclusão de informações de vulnerabilidade para os ecossistemas compatíveis a partir de 2017. Ao adicionar CVEs ao banco de dados, priorizamos a curadoria de CVEs mais recentes e CVEs que afetam versões mais recentes do software.

Algumas informações sobre vulnerabilidades mais antigas estão disponíveis, especialmente quando estes CVEs estão particularmente disseminados. No entanto algumas vulnerabilidades antigas não estão incluídas no Banco de Dados Consultivo GitHub. Se houver uma vulnerabilidade antiga específica que você precisar incluir no banco de dados, entre em contato com GitHub Support or GitHub Premium Support.

Verifique: A vulnerabilidade não detectada tem uma data de publicação anterior a 2017 no Banco de Dados Nacional de Vulnerabilidade?

Por que o Banco de Dados Consultivo GitHub usa um subconjunto de dados de vulnerabilidade publicada?

Algumas ferramentas de terceiros usam dados de CVE não descurados que não são verificados ou filtrados por um ser humano. Isto significa que os CVEs com erros de etiqueta ou de gravidade, ou outros problemas de qualidade, gerarão alertas mais frequentes, mais ruidosos e menos úteis.

Uma vez que Dependabot usa dados curados em Banco de Dados Consultivo GitHub, o volume de alertas pode ser menor, mas os alertas que você recebe serão precisos e relevantes.

Cada vulnerabilidade de dependência gera um alerta separado?

Quando uma dependência tem várias vulnerabilidades, apenas um alerta agregado é gerado para essa dependência, em vez de um alerta por vulnerabilidade.

A contagem de alertas de Dependabot em GitHub mostra um total para o número de alertas, ou seja, o número de dependências com vulnerabilidades, não o número de vulnerabilidades.

Vista de alertas de Dependabot

Ao clicar para exibir os detalhes de alerta, você pode ver quantas vulnerabilidades são incluídas no alerta.

Múltiplas vulnerabilidades para um alerta de Dependabot

Verifique: Se houver discrepância no total que você está vendo, verifique se você não está comparando números de alerta com números de vulnerabilidade.

Leia mais

Did this doc help you?

Help us make these docs great!

All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.

Make a contribution

Ou, learn how to contribute.