Melhores práticas de manutenção de dependências
Manter-se em dia com as dependências é crucial para manter um ambiente de software seguro. Veja algumas recomendações:
Adotar ferramentas de gerenciamento de dependências voltadas para a segurança
- Use e configure ferramentas que verificam suas dependências em busca de vulnerabilidades e sugerem atualizações automaticamente.
- Verifique se essas ferramentas estão integradas ao pipeline de CI/CD para monitoramento e atualização contínuos.
- Configure seus processos para seguir o controle de versão semântico a fim de evitar alterações interruptivas.
Executar verificações e auditorias de vulnerabilidades regulares
- Agende auditorias e verificações de dependência regulares para identificar dependências desatualizadas ou vulneráveis.
Automatizar o gerenciamento de patches de segurança
- Configure suas ferramentas de gerenciamento de dependência para aplicar patches de segurança automaticamente.
- Configure pull requests automatizadas para atualizações de segurança críticas de modo que possam ser revisadas e mescladas rapidamente.
Impor políticas sobre o uso de dependências
- Implemente políticas que imponham o uso de versões seguras de dependências.
- Use ferramentas que podem bloquear o merge de pull requests caso elas introduzam vulnerabilidades ou não atualizem dependências vulneráveis.
Integrar o teste de segurança em CI/CD
- Incorpore ferramentas de teste de segurança ao pipeline de CI/CD.
- Verifique se as atualizações de dependência são testadas automaticamente em relação à conformidade de segurança.
Usar arquivos de bloqueio e fixação de dependência
- Use arquivos de bloqueio (por exemplo,
package-lock.json
,yarn.lock
ePipfile.lock
) para fixar dependências em versões seguras conhecidas. - Atualize e revise regularmente esses arquivos de bloqueio para garantir que as dependências estejam atualizadas sem problemas de segurança não intencionais.
Monitorar avisos de segurança
- Assine avisos de segurança para as linguagens e as estruturas que você usa.
- Automatize a integração de avisos ao fluxo de trabalho de desenvolvimento para se manter em dia sobre novas vulnerabilidades.
- Fique de olho nos painéis fornecidos pelas ferramentas de gerenciamento de dependências.
- Lembre-se de atualizações críticas, especialmente patches de segurança, e priorize-as.
Controle de versão e gerenciamento de alterações
- Acompanhe as alterações de dependência no controle de versão (por exemplo, por meio de pull requests automatizadas).
- Realize revisões de código regulares para garantir que as atualizações não introduzam novas vulnerabilidades.
Treinamento e conscientização
- Eduque suas equipes de desenvolvimento e operações sobre a importância de manter as dependências seguras e atualizadas.
- Ofereça treinamento sobre como usar o gerenciamento de dependências e as ferramentas de segurança com eficiência.
Plano de resposta para vulnerabilidades
- Tenha um plano de resposta a incidentes bem definido para quando as vulnerabilidades forem identificadas nas dependências.
- Verifique se a equipe sabe como resolver e corrigir problemas de segurança rapidamente.
Seguindo essas práticas, você pode reduzir de maneira significativa o risco representado por dependências desatualizadas e vulneráveis e manter um ambiente mais seguro.
Como o GitHub pode ser útil
O GitHub oferece vários recursos de segurança que podem ajudar a manter a segurança das suas bases de código:
Grafo de dependência
- Fornece uma representação de tabela das dependências do projeto.
- O grafo ajuda você a entender as dependências do seu projeto e o GitHub usa isso para identificar as dependências vulneráveis.
- Para saber mais, confira Sobre o gráfico de dependências.
Revisão de dependência
-
É integrado ao pipeline de CI/CD e permite que você capture as dependências não seguras no código a cada pull request. Para saber mais, confira Sobre a análise de dependência.
-
A ação de revisão de dependência é uma ferramenta que pode bloquear o merge de pull requests caso elas introduzam vulnerabilidades ou não atualizem as dependências vulneráveis. Para saber mais, confira “Sobre a ação de revisão de dependência” em Sobre a análise de dependência.
Dependabot
-
Dependabot alerts: o Dependabot verifica suas dependências em busca de vulnerabilidades conhecidas e cria alertas automaticamente quando vulnerabilidades são encontradas no repositório. Para saber mais, confira Sobre alertas do Dependabot.
-
Dependabot security updates: abre automaticamente pull requests para atualizar as dependências vulneráveis para versões que não têm vulnerabilidades conhecidas. Assim, você pode revisar e mesclar as correções rapidamente. Para saber mais, confira Sobre as atualizações de segurança do Dependabot.
-
Dependabot version updates: também podem ser configuradas para abrir automaticamente pull requests para atualizar suas dependências para as últimas versões com regularidade, garantindo que você esteja sempre usando pacotes atuais. Para saber mais, confira Sobre as atualizações da versão do Dependabot.
-
Atualizações agrupadas: facilita a revisão e a implantação de pull requests para as Dependabot updates agrupando várias atualizações em uma só pull request. Confira Sobre as atualizações de segurança agrupadas e exemplos em Como otimizar a criação de pull requests para atualizações de versão do Dependabot
Avisos de segurança
-
Relatórios de vulnerabilidades privadas: permite que os mantenedores discutam, corrijam e publiquem avisos de segurança para os respectivos repositórios. Para saber mais, confira Como relatar de modo privado uma vulnerabilidade de segurança.
-
GitHub Advisory Database: um banco de dados de avisos de segurança usado pelo Dependabot para identificar vulnerabilidades nas suas dependências. Para saber mais, confira Sobre o banco de dados de avisos do GitHub.
Visão geral de segurança
- Fique de olho nos painéis da página de visão geral de segurança, que fornecem insights sobre o cenário e o progresso de segurança da sua organização ou empresa. Ela ajuda os usuários a identificar repositórios que precisam de atenção e monitorar a integridade do programa de segurança do aplicativo. Para saber mais, confira Sobre a visão geral de segurança.
Política de segurança
- Você pode criar um arquivo
SECURITY.md
no seu repositório que descreva as políticas e os procedimentos de segurança para relatar e resolver problemas de segurança. Para saber mais, confira Adicionar uma política de segurança a um repositório.
Para ver mais diretrizes em toda a cadeia de fornecedores usando os recursos de segurança do GitHub, confira Protegendo sua cadeia de suprimentos de ponta a ponta.