Skip to main content
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 Enterprise Cloud não são o que você esperava, há uma série de pontos a considerar, e várias coisas que você pode verificar.

Os resultados da detecção de dependências relatados pelo GitHub Enterprise Cloud 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 Aviso de Segurança do 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 em Banco de Dados Consultivo GitHub" e "Sobre Aviso de Segurança do 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ências" e "Solucionando problemas no gráfico de dependências".

  • 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. 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 do Dependabot".

  • Atualizações de segurança do Dependabot são acionados quando você recebe um alerta sobre uma dependência vulnerável no repositório. Sempre que possível, Dependabot cria um pull request no repositório para atualizar a dependência vulnerável à versão mínima segura necessária para evitar a vulnerabilidade. Para obter mais informações, consulte "Sobre Atualizações de segurança do Dependabot" e "Solução de problemas de Dependabot".

    Dependabot não pesquisa repositórios com relação a dependências vulneráveis de uma programação, mas o faz quando algo muda. Por exemplo, aciona-se uma varredura quando uma nova dependência é adicionada (GitHub verifica isso em cada push), ou quando uma nova vulnerabilidade é adicionada ao banco de dados da consultoria. Para obter mais informações, consulte "Sobre Alertas do Dependabot".

Alertas do Dependabot só está relacionado a dependências vulneráveis nos manifestos e arquivos de bloqueio?

Os Alertas do Dependabot aconselham você com relação a dependências que você deve atualizar, incluindo dependências transitivas, em que a versão pode ser determinada a partir de um manifesto ou de um arquivo de bloqueio. Atualizações de segurança do Dependabot sugere apenas uma mudança em que Dependabot pode "corrigir" diretamente a dependência, ou seja, quando 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

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

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. As vulnerabilidades curadas no Banco de Dados Consultivo GitHub, o gráfico de dependências, Dependabot atualizações de segurança, e Alertas do Dependabot são fornecidos para vários ecossistemas, incluindo o Maven do Javaen, o npm do JavaScript e o Yarn, Nuget do .NET's, Pip Python, RubyGems e PHP Composer. 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 observar que as consultorias de segurança de GitHub podem 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. Para obter mais informações, consulte "Sobre consultorias de segurança de GitHub

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

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.

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, gera-se um alerta para cada vulnerabilidade no nível da consultoria mais manifesto.

Captura de tela da aba de Alertas do Dependabot que mostra dois alertas do mesmo pacote com manifestos diferentes.

O legado de Alertas do Dependabot foi agrupado em um único alerta agregado com todas as vulnerabilidades para a mesma dependência. Se você acessar um link para um alerta de legadode Dependabot, você será redirecionado para a aba de Alertas do Dependabot filtrada para exibir vulnerabilidades para esse pacote e manifesto dependente.

Captura de tela da aba Alertas do Dependabot que mostra os alertas filtrados da navegação até um alerta de legado de Dependabot.

A contagem de Alertas do Dependabot em GitHub mostra um total para o número de alertas, que é o número de vulnerabilidades, não o número de dependências.

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 dependência. Também verifique se você está visualizando todos os alertas e não um subconjunto de alertas filtrados.

Leia mais