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 o GitHub determina as dependências para o seu projeto.
Dependências ausentes ou não detectadas
GitHub gera e exibe dados de dependência de forma diferente de outras ferramentas. Consequentemente, se você usou outra ferramenta para identificar dependências, quase certamente verá resultados diferentes. Considere o seguinte:
-
GitHub Advisory Database é uma das fontes de dados que GitHub usa para identificar dependências vulneráveis e malware. É um banco de dados gratuito e selecionado de avisos de segurança para ecossistemas de pacotes comuns em GitHub. Ele inclui tanto os dados relatados diretamente para GitHub a partir de GitHub Security Advisories quanto feeds oficiais e fontes da comunidade. Esses dados são revisados e curados GitHub para garantir que informações falsas ou sem possibilidade de ação não sejam compartilhadas com a comunidade de desenvolvimento. Para saber mais, confira Como 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 saber mais, confira Sobre o gráfico de dependências e Solução de problemas para o gráfico de dependências.
-
Dependabot verifica qualquer push para a ramificação padrão que contenha 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. Dependabot alerts são agregados no nível do repositório, em vez de criar um alerta por aviso. Para saber mais, confira [AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts). -
Dependabot security updates são disparados quando você recebe um alerta sobre uma dependência vulnerável em seu repositório. Sempre que possível, Dependabot cria uma solicitação de pull em seu repositório para atualizar a dependência vulnerável para a versão segura mínima possível necessária para evitar a vulnerabilidade. Para saber mais, confira Sobre as atualizações de segurança do Dependabot e Erros do Dependabot.
Dependabot não verifica repositórios de forma programada, mas sim quando algo é alterado. Por exemplo, uma verificação é disparada quando uma nova dependência é adicionada (GitHub verifica isso em cada push) ou quando uma nova recomendação é adicionada ao banco de dados. Para saber mais, confira [AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts#detection-of-insecure-dependencies).
Escopo de cobertura de alerta
Dependabot alerts informá-lo sobre as 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 lockfile.
Dependabot security updates só sugira uma mudança onde Dependabot possa "corrigir" diretamente a dependência, ou seja, quando ela é:
-
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?
Ecossistemas sem suporte
Dependabot alerts há suporte para um conjunto de ecossistemas em que podemos fornecer dados acionáveis e de alta qualidade. Avisos selecionados no GitHub Advisory Database, o gráfico de dependência, Dependabot atualizações de segurança, e Dependabot alerts são fornecidos para vários ecossistemas, incluindo Maven do Java, npm e Yarn do JavaScript, NuGet do .NET, pip do Python, RubyGems do Ruby e Composer do PHP. Para obter uma visão geral dos ecossistemas de pacote aos quais oferecemos suporte Dependabot alerts, consulte [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems#supported-package-ecosystems).
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 curados por GitHub. Para saber mais, confira Como procurar avisos de segurança no GitHub Advisory Database.
**Verificação**: a vulnerabilidade não capturada se aplica a um ecossistema sem suporte?
Vulnerabilidades históricas
O GitHub Advisory Database foi lançado em novembro de 2019 e inicialmente atualizado retroativamente para incluir conselhos sobre riscos de segurança nos ecossistemas com suporte, com início em 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 esses CVEs são particularmente difundidos, no entanto, algumas vulnerabilidades antigas não são incluídas no GitHub Advisory Database. Se houver uma vulnerabilidade antiga específica que você precise que seja incluída no banco de dados, entre em contato conosco por meio do Portal de suporte do GitHub.
**Verificação**: a vulnerabilidade não capturada tem uma data de publicação anterior a 2017 no National Vulnerability Database?
Escopo do banco de dados de consultoria
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 Dependabot usa dados coletados no GitHub Advisory Database, o volume de alertas pode ser menor, mas os alertas recebidos serão precisos e relevantes.
Geração e agregação de alertas
Quando uma dependência tem várias vulnerabilidades, gera-se um alerta para cada vulnerabilidade no nível da consultoria mais manifesto.

Os Dependabot alerts herdados foram agrupados em um único alerta agregado com todas as vulnerabilidades para a mesma dependência. Se você navegar até um link para um alerta herdado Dependabot , será redirecionado para a Dependabot guia filtrada para exibir vulnerabilidades para esse pacote e manifesto dependentes.

A Dependabot alerts contagem 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.
**Verificação**: se houver uma discrepância nos totais que você está vendo, verifique se não está comparando números de alertas com números de dependências. Também verifique se você está visualizando todos os alertas e não um subconjunto de alertas filtrados.
Opções para ignorar dependências
Você pode configurar 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 saber mais, confira Configuração de atualizações de segurança do Dependabot para impedir que as atualizações de versão sejam ativadas. Para obter informações sobre como ignorar dependências, confira Como ignorar dependências específicas.
Limitações de repositório único para GitHub Actions versões
Se o repositório contiver vários GitHub Actions (por exemplo, em um repositório único), o formato de marcação que você usa afetará como Dependabot detecta e atualiza versões de ações.
-
Separador traço (
-) (por exemplo,@my-action-v0.1.0):- Dependabot pode agrupar várias ações em uma única entrada de dependência ou não detectar novas versões corretamente. Isso ocorre porque Dependabot depende da análise de tags com base em barras para distinguir entre ações.
-
Separador barra (
/) (por exemplo,@my-action/v0.1.0):-
Dependabot detecta e atualiza cada ação de forma independente, pois a barra cria uma estrutura hierárquica de marcações que se alinha à lógica de análise de Dependabot. **Recomendação:** para repositórios únicos com várias ações, use o formato `name/version` (barra) para marcas de ação. Isso garante que Dependabot possa analisar a hierarquia de tags corretamente e atualizar as ações de forma independente.
-
-
Exemplo:
# Recommended: namespaced with slash uses: my-org/monorepo/my-action@my-action/v0.1.0 # Not recommended: dash uses: my-org/monorepo@my-action-v0.1.0