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 Enterprise Server 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 Server 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:

  • O GitHub Advisory Database é uma das fontes de dados que o GitHub usa para identificar dependências vulneráveis . Ele é um banco de dados coletado gratuito, que contém de avisos de segurança de ecossistemas de pacotes comuns no GitHub. Inclui tanto dados relatados diretamente para GitHub de GitHub Security Advisories 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, confira "Procurar avisos de segurança no GitHub Advisory Database".

  • 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 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, confira "Sobre o grafo de dependência" e "Solução de problemas do grafo de dependência".

  • O Dependabot examina qualquer push, para o branch padrão, que contém um arquivo de manifesto. Quando um novo aviso é adicionado, ele verifica todos os repositórios existentes e gera um alerta para cada repositório afetado. Os Dependabot alerts são agregados no nível do repositório, não é criado um alerta para cada aviso. Para obter mais informações, confira "Sobre os Dependabot alerts".

  • As Dependabot security updates são disparadas quando você recebe um alerta sobre uma dependência vulnerável no seu 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, confira "Sobre as Dependabot security updates" e "Solução de problemas de erros do Dependabot".

    O Dependabot não verifica os repositórios com agendamento, mas somente quando algo muda. Por exemplo, uma verificação é disparada quando uma nova dependência é adicionada (o GitHub verifica isso em cada push) ou quando um novo aviso é adicionado ao banco de dados e sincronizado com o your GitHub Enterprise Server instance. Para obter mais informações, confira "Sobre os Dependabot alerts".

Os Dependabot alerts só estão relacionados a dependências não seguras nos manifestos e arquivos de bloqueio?

Os Dependabot alerts 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. As Dependabot security updates sugerem apenas uma alteração em que o Dependabot pode "corrigir" diretamente a dependência, ou seja, quando elas 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

Verificação: a vulnerabilidade não capturada é de um componente que não está especificado no manifesto ou no arquivo de bloqueio do repositório?

Por que não recebo Dependabot alerts de alguns ecossistemas?

Há suporte para Dependabot alerts em um conjunto de ecossistemas em que podemos fornecer dados acionáveis e de alta qualidade. Os avisos coletados no GitHub Advisory Database, o grafo de dependência, e os Dependabot alerts são fornecidos para vários ecossistemas, incluindo o Maven do Java, o npm do JavaScript e o YARN, NuGet do .NET, o pip do Python, RubyGems do Ruby e o Composer do PHP. Nós continuaremos a adicionar suporte para mais ecossistemas ao longo do tempo. Para ter uma visão geral dos ecossistemas de pacote aos quais damos suporte, confira "Sobre o grafo de dependência".

Vale a pena observar que podem existir avisos de segurança para outros ecossistemas. As informações em um aviso de segurança não examinado são fornecidas pelos mantenedores de um determinado repositório. Esses dados não são coletados pelo GitHub. Para obter mais informações, confira "Procurar avisos de segurança no GitHub Advisory Database".

Verificação: a vulnerabilidade não capturada se aplica a um ecossistema sem suporte?

Há quantos anos o Dependabot gera alertas para vulnerabilidades conhecidas?

O GitHub Advisory Database foi lançado em novembro de 2019 e preenchido inicialmente com avisos de riscos de segurança nos ecossistemas com suporte encontrados 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 GitHub Advisory Database. Se houver uma vulnerabilidade antiga específica que você precisar incluir no banco de dados, entre em contato com seu administrador do site.

Verificação: a vulnerabilidade não capturada tem uma data de publicação anterior a 2017 no National Vulnerability Database?

Por que o GitHub Advisory Database 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.

Como o Dependabot usa os dados coletados no GitHub Advisory Database, o volume de alertas pode ser menor, mas os alertas recebidos serão precisos e relevantes.

O Dependabot pode ignorar dependências específicas?

Você pode configurar o Dependabot para ignorar dependências específicas no arquivo de configuração, o que impedirá atualizações de segurança e de versão para essas dependências. Se você quiser usar apenas atualizações de segurança, substitua o comportamento padrão usando um arquivo de configuração. Para obter mais informações, confira "Como substituir o comportamento padrão com um arquivo de configuração" para impedir que as atualizações de versão sejam ativadas. Para obter informações de como ignorar dependências, confira "ignore".

Leitura adicional