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:
-
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. For more information about advisory data, see "Browsing security vulnerabilities in the Banco de Dados Consultivo GitHub" in the GitHub.com documentation.
-
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. 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"
-
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 e sincronizado com your GitHub Enterprise Server instance. Para obter mais informações, consulte "Sobre alertas para dependências vulneráveis"
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, 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.
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 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.
O gráfico de dependências não inclui dependências de "soltas". 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:
-
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 outras contas, manifestos acima de 0,5 MB são ignorados e não criarão Alertas do Dependabot.
Por padrão, o GitHub não processará mais de 20 manifestos por repositório. Alertas do Dependabot não foi criado para manifestos acima deste limite. Se você precisar aumentar o limite, entre em contato com your site administrator.
-
Limites de visualização
Eles afetam o que é exibido no gráfico de dependências dentro de GitHub. No entanto, eles não afetam Alertas do 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 do 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 your site administrator.
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.