Skip to main content

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.

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 e malware. É um banco de dados grátis e curado de consultorias de segurança 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 consultorias de segurança em Banco de Dados Consultivo 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 uma nova consultoria é adicionada, ela verifica todos os repositórios existentes e gera um alerta para cada repositório afetado. Alertas do Dependabot são agregados ao nível do repositório, em vez de criar um alerta por consultoria. 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 digitaliza repositórios em uma agenda, mas sim quando algo muda. Por exemplo, adiciona-se uma digitalização quando uma nova dependência é adicionada (GitHub verifica isso em cada push), ou quando uma nova consultoria é adicionada ao banco de dados. Para obter mais informações, consulte "Sobre Alertas do Dependabot".

Alertas do Dependabot só está relacionado a dependências inseguras 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 tenho Alertas do Dependabot para alguns ecossistemas?

Alertas do Dependabot são compatíveis com um conjunto de ecossistemas em que podemos fornecer dados de alta qualidade e acionáveis. As consultorias 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 notar que podem existir consultorias de segurança para outros ecossistemas. As informações em uma consultoria de segurança não revisada são fornecidas pelos mantenedores de um determinado repositório. Este dado não é curado por GitHub. Para obter mais informações, consulte "Pesquisar consultorias de segurança em Banco de Dados Consultivo 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 inicialmente preenchido para incluir consultores sobre riscos de segurança nos ecossistemas compatívies 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 dependência insegura 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.

Depende pode ignorar dependências específicas?

Você pode configurar Dependabot para ignorar dependências específicas no arquivo de configuração, o que irá impedir a segurança e atualizações de versão para essas dependências. Se você deseja usar apenas atualizações de segurança, você deverá substituir o comportamento padrão por um arquivo de configuração. Para obter mais informações, consulte "Substituindo o comportamento padrão com um arquivo de configuração" para evitar que as atualizações da versão sejam ativadas. Para obter informações sobre como ignorar as dependências, consulte "ignorar"

Leia mais