Sobre a segurança da cadeia de suprimentos no GitHub
Ao desenvolver um projeto de software, você provavelmente usa outro software para criar e executar seu aplicativo, como bibliotecas de software livre, estruturas ou outras ferramentas. Esses recursos são coletivamente chamados de "dependências", porque seu projeto depende deles para funcionar corretamente. Seu projeto pode contar com centenas dessas dependências, formando o que é conhecido como sua "cadeia de suprimentos".
Sua cadeia de suprimentos pode representar um problema de segurança. Se uma de suas dependências tiver uma falha de segurança conhecida ou um bug, agentes mal-intencionados poderão explorar essa vulnerabilidade para, por exemplo, inserir código mal-intencionado ("malware"), roubar dados confidenciais ou causar algum outro tipo de interrupção em seu projeto. Esse tipo de ameaça é chamado de "ataque à cadeia de suprimentos". Ter dependências vulneráveis em sua cadeia de suprimentos compromete a segurança de seu próprio projeto e você também coloca seus usuários em risco.
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 Enterprise Server oferece uma variedade de recursos para ajudar você a entender as dependências no seu ambiente, conhecer vulnerabilidades nessas dependências e corrigi-las.
As funcionalidades da cadeia de suprimentos em GitHub Enterprise Server 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 referência cruzada aos dados de dependência fornecidos pelo grafo de dependentes com a lista de avisos publicados no GitHub Advisory Database, verifica suas dependências e gera Dependabot alerts quando uma vulnerabilidade potencial é detectada.
- 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 ver guias de melhores práticas sobre a segurança da cadeia de fornecedores de ponta a ponta, incluindo a proteção de contas pessoais, códigos e processos de build, confira Protegendo 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 Enterprise Server e acessando a guia Insights.
- Se você tiver pelo menos acesso de leitura ao repositório, poderá exportar o grafo de dependência para o repositório como uma SBOM (conta de materiais de software) compatível com SPDX, por meio da GitHub interface do usuário ou da API REST do GitHub. Para obter mais informações, confira "Como exportar uma lista de materiais de software para seu repositório".
Além disso, você pode usar a API de envio de dependência para enviar dependências do gerenciador de pacotes ou ecossistema de sua escolha, mesmo que o ecossistema não tenha suporte pelo grafo de dependência para análise de arquivos de manifesto ou de bloqueio. O grafo de dependência realizará a exibição das dependências enviadas agrupadas por ecossistema, mas separadas das dependências analisadas usando os arquivos de manifesto ou de bloqueio. Para obter mais informações sobre a API de envio de dependência, confira “Usar a API de envio de dependências”.
Para obter mais informações sobre o grafo de dependência, confira Sobre o gráfico de dependências.
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 análise 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 pull requests 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 Security 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 security updates e Dependabot version updates exigem que o GitHub Actions seja executado no GitHub Enterprise Server. Dependabot alerts não exigem GitHub Actions. Para saber mais, confira Habilitando o Dependabot para sua empresa.
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 um pull request para atualizar GitHub Actions vulneráveis usadas nos fluxos de trabalho para a versão mínima corrigida. Para obter mais informações, confira Sobre as atualizações de segurança do Dependabot.
Quais são os alertas do Dependabot
Os Dependabot alerts apontam os repositórios afetados por uma vulnerabilidade descoberta recentemente com base no grafo de dependentes e no GitHub Advisory Database, que contém avisos de vulnerabilidades conhecidas.
- O Dependabot faz a verificação para detectar dependências não seguras e envia Dependabot alerts quando:
- Novos dados de aviso são sincronizados com a instância a cada hora no GitHub.com. Para obter mais informações, confira "Como procurar avisos de segurança no GitHub Advisory Database".
- O gráfico de dependências para as alterações no repositório.
- 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 saber mais, confira Sobre alertas do Dependabot.
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 atualizações de segurança do Dependabot e Sobre as atualizações da versão do Dependabot.
Disponibilidade de recursos
-
Grafo de dependência e Dependabot alerts: não habilitado por padrão. Ambas as funcionalidades são configuradas a nível empresarial pelo proprietário da empresa. Para obter mais informações, confira Habilitando o gráfico de dependências para a sua empresa e Habilitando o Dependabot para sua empresa.
-
Revisão de dependência: disponível quando o grafo de dependência está habilitado para a instância e Advanced Security está habilitada para a organização ou o repositório. Para saber mais, confira Sobre a Segurança Avançada do GitHub.
-
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 Configurando as atualizações de segurança do Dependabot.
-
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 atualizações de versão, consulte Configurando a versão das atualizações do Dependabot.