Skip to main content

Sobre a segurança da cadeia de suprimento

O GitHub ajuda você a proteger a cadeia de fornecedores, oferecendo desde o entendimento das dependências do ambiente até a identificação de vulnerabilidades nessas dependências e aplicação de patch nelas.

Sobre a segurança da cadeia de suprimentos no GitHub

Com o uso acelerado de código aberto, a maioria dos projetos depende de centenas de dependências de código aberto. Isso coloca um problema de segurança: e se as dependências que você estiver usando forem vulneráveis? Você poderia colocar os seus usuários em risco de ataque da cadeia de suprimentos. Uma das coisas mais importantes que você pode fazer para proteger a cadeia de fornecedores é corrigir as dependências vulneráveis e substituir os malwares.

Você adiciona dependências diretamente à sua cadeia de suprimentos ao especificá-las em um arquivo de manifesto ou um arquivo de bloqueio. As dependências também podem ser incluídas transitoriamente, ou seja, até mesmo se você não especificar uma dependência em particular, mas a sua dependência a usa, portanto, você também depende dessa dependência.

O GitHub oferece uma variedade de recursos para ajudar você a entender as dependências do ambiente, conhecer as vulnerabilidades nessas dependências e aplicar patch nelas.

As funcionalidades da cadeia de suprimentos em GitHub são:

  • Grafo de dependência
  • Revisão de dependência
  • Dependabot alerts - Dependabot updates
    • Dependabot security updates
    • Dependabot version updates

O gráfico de dependências é fundamental para fornecer segurança da cadeia de suprimentos. O gráfico de dependências identifica todas as dependências a montante e as dependências públicas a jusante de um repositório ou pacote. É possível ver as dependências e algumas de suas propriedades, como informações de vulnerabilidade, no gráfico de dependências do repositório.

As outras funcionalidades da cadeia de suprimentos em GitHub dependem das informações fornecidas pelo gráfico de dependências.

  • A revisão de dependências usa o gráfico de dependências para identificar mudanças de dependências e ajuda você a entender o impacto de segurança dessas alterações ao revisar pull requests.
  • O Dependabot faz a referência cruzada dos dados de dependência fornecidos pelo grafo de dependência com a lista de avisos publicadas no GitHub Advisory Database, verifica as dependências e gera Dependabot alerts quando é detectada uma possível vulnerabilidade ou malware. – As Dependabot security updates usam o grafo de dependência e os Dependabot alerts para ajudar você a atualizar as dependências com vulnerabilidades conhecidas no repositório.

Dependabot version updates não usa o gráfico de dependências e confia na versão semântica das dependências. Dependabot version updates ajuda você a manter suas dependências atualizadas, mesmo quando elas não têm nenhuma vulnerabilidade.

Para obter guias de melhores práticas sobre a segurança da cadeia de suprimentos de ponta a ponta, incluindo a proteção de contas pessoais, códigos e processos de build, confira "Como proteger sua cadeia de suprimentos de ponta a ponta".

Visão geral do recurso

Qual é o gráfico de dependências

Para gerar o gráfico de dependência, GitHub analisa as dependências explícitas de um repositório declaradas no manifesto e no arquivo de bloqueio. Quando habilitado, o gráfico de dependências analisa automaticamente todos os arquivos de manifesto de pacote conhecidos no repositório, e usa isto para construir um gráfico com nomes e versões conhecidas das dependências.

  • O grafo de dependência inclui informações sobre as dependências diretas e as dependências transitivas.

  • O gráfico de dependência é atualizado automaticamente quando você faz push de um commit para GitHub que altera ou adiciona um manifesto compatível ou um arquivo de bloqueio para o branch padrão, e quando alguém fizer uma alteração no repositório de uma de suas dependências.

  • Veja o grafo de dependência abrindo a página principal do repositório no GitHub e acessando a guia Insights.

    Além disso, você pode usar a API de envio de dependência (beta) para enviar dependências do gerenciador de pacotes ou ecossistema de sua escolha, mesmo que o ecossistema não tenha suporte no grafo de dependência para análise de arquivo de bloqueio ou manifesto. O grafo de dependência exibirá as dependências enviadas agrupadas por ecossistema, mas separadamente das dependências analisadas dos arquivos de bloqueio ou manifesto. Para obter mais informações sobre a API de envio de dependência, confira "Usar a API de envio de dependência".

Para obter mais informações sobre o grafo de dependência, confira "Sobre o grafo de dependência".

O que é revisão de dependências

A revisão de dependências ajuda os revisores e colaboradores a entenderem as mudanças de dependência e seu impacto de segurança em cada pull request.

  • A revisão de dependências informa quais dependências foram adicionadas, removidas ou atualizadas em um pull request. Você pode usar as datas de versão, a popularidade das dependências e informações de vulnerabilidade para ajudar você a decidir se deseja aceitar a alteração.
  • Veja a revisão de dependência para uma solicitação de pull mostrando a comparação avançada na guia Arquivos Alterados.

Para obter mais informações sobre a revisão de dependência, confira "Sobre a revisão de dependência".

O que é o Dependabot

O Dependabot mantém as dependências atualizadas informando sobre as vulnerabilidades de segurança nas dependências e abre solicitações de pull automaticamente a fim de atualizar as dependências para a próxima versão segura disponível quando um alerta do Dependabot é disparado ou para a última versão quando um lançamento é publicado.

O termo "Dependabot" engloba os seguintes recursos:

  • Dependabot alerts – Notificação exibida na guia Segurança do repositório e no grafo de dependência do repositório. O alerta inclui um link para o arquivo afetado no projeto, e informações sobre uma versão corrigida.
  • Dependabot updates:
    • Dependabot security updates—Atualizações acionadas para atualizar suas dependências para uma versão segura quando um alerta é acionado.
    • Dependabot version updates— Atualizações agendadas para manter suas dependências atualizadas com a versão mais recente.

Dependabot alerts, Dependabot security updates, e Dependabot version updates não usam GitHub Actions quando são executados no GitHub. No entanto, as solicitações de pull abertas pelo Dependabot podem disparar fluxos de trabalho que executam ações. Para obter mais informações, confira "Como automatizar o Dependabot com o GitHub Actions".

Dependabot security updates pode corrigir dependências vulneráveis no GitHub Actions. Quando as atualizações de segurança estiverem habilitadas, o Dependabot gerará automaticamente uma solicitação de pull para atualizar dados vulneráveis do GitHub Actions usados em seus fluxos de trabalho para a versão mínima corrigida. Para saber mais, confira "Sobre Dependabot security updates".

Quais são os alertas do Dependabot

O Dependabot alerts destaca os repositórios afetados por uma vulnerabilidade recém-descoberta com base no grafo de dependência e no GitHub Advisory Database, que contém os avisos de vulnerabilidades conhecidas e malwares.

  • O Dependabot faz a verificação para detectar dependências não seguras e envia Dependabot alerts quando:
    • Um novo aviso é adicionado ao GitHub Advisory Database.
    • O gráfico de dependências para as alterações no repositório.
  • Os Dependabot alerts são exibidos na guia Segurança do repositório e no grafo de dependência do repositório. O alerta inclui um link para o arquivo afetado no projeto e informações sobre uma versão corrigida.

Para obter mais informações, confira "Sobre os Dependabot alerts".

Quais são as atualizações do Dependabot

Há dois tipos de Dependabot updates: atualizações de segurança e atualizações de versão do Dependabot. Dependabot gera pull requests automáticos para atualizar suas dependências em ambos os casos, mas existem várias diferenças.

Dependabot security updates:

  • Acionado por um alerta de Dependabot
  • Atualizar dependências para a versão mínima que resolve uma vulnerabilidade conhecida
  • Compatível para os ecossistemas que o gráfico de dependências suporta
  • Não requer um arquivo de configuração, mas você pode usar um para substituir o comportamento padrão

Dependabot version updates:

  • Requer um arquivo de configuração
  • Executar em um calendário que você configura
  • Atualizar dependências para a última versão que corresponde à configuração
  • Compatível para um grupo diferente de ecossistemas

Para obter mais informações sobre as Dependabot updates, confira "Sobre as Dependabot security updates" e "Sobre as Dependabot version updates".

Disponibilidade de recursos

Repositórios públicos:

  • Grafo de dependência – habilitado por padrão, não podendo ser desabilitado.
  • Revisão de dependência – habilitada por padrão, não podendo ser desabilitada.
  • Dependabot alerts : não habilitado por padrão. O GitHub detecta dependências não seguras e exibe informações no grafo de dependência, mas não gera Dependabot alerts por padrão. Os proprietários do repositório ou pessoas com acesso de administrador podem habilitar Dependabot alerts. Você também pode habilitar ou desabilitar alertas do Dependabot para todos os repositórios pertencentes à sua conta de usuário ou organização. Para obter mais informações, confira "Como gerenciar as configurações de segurança e análise da sua conta de usuário" ou "Como gerenciar as configurações de segurança e análise da sua organização".

Repositórios privados:

Qualquer tipo de repositório:

  • Dependabot security updates : não habilitado por padrão. É possível habilitar o Dependabot security updates para qualquer repositório que use Dependabot alerts e o gráfico de dependências. Para obter informações sobre como habilitar as atualizações de segurança, confira "Como configurar as Dependabot security updates".
  • Dependabot version updates : não habilitado por padrão. As pessoas com permissões de gravação em um repositório podem habilitar Dependabot version updates. Para obter informações sobre como habilitar as atualizações de versão, confira "Como configurar as Dependabot version updates".