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 versionamento semântico, evitando alterações que possam quebrar a compatibilidade.
**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.
-
Também configure solicitações de pull automatizadas para atualizações críticas de segurança, permitindo que sejam 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 a mesclagem de pull requests caso introduzam vulnerabilidades ou falhem em atualizar dependências vulneráveis.
**Integrar o teste de segurança em CI/CD** -
Incorpore ferramentas de teste de segurança no pipeline de CI/CD.
-
Verifique se as atualizações de dependência são testadas automaticamente em relação à conformidade de segurança.
**Use arquivos de bloqueio e fixação de dependências** -
Use arquivos de bloqueio (por exemplo,
package-lock.json,yarn.lockePipfile.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
GitHub fornece recursos de segurança para ajudá-lo a manter dependências:
**Grafo de dependência**: controla as dependências do projeto e identifica vulnerabilidades. Confira [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph).
**Revisão de dependência**: captura dependências inseguras em solicitações de pull antes de serem mescladas. Além disso, o ação de revisão de dependência pode falhar nas verificações e, quando exigido pelas regras de proteção de branch, impedir que solicitações de pull que introduzam vulnerabilidades sejam mescladas. Confira [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review).
**Dependabot**: analisa vulnerabilidades automaticamente, gera alertas e cria solicitações de pull para atualizar dependências que estejam desatualizadas ou vulneráveis. Você pode agrupar várias atualizações em solicitações de pull único para simplificar as revisões. Confira [AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts).
**GitHub Advisory Database**: Fornece avisos de segurança que impulsionam a detecção de vulnerabilidades do Dependabot. Veja [AUTOTITLE](/code-security/security-advisories/working-with-global-security-advisories-from-the-github-advisory-database/about-the-github-advisory-database).
**Relatório de vulnerabilidades privadas**: permite que os mantenedores recebam, discutam e corrijam relatórios de vulnerabilidade em particular antes da divulgação pública.
Visão geral de segurança: mostra a postura de segurança da sua organização com painéis para repositórios em risco, tendências de alerta e status de habilitação de recursos. Confira Sobre a visão geral de segurança.
Para obter diretrizes de cadeia de suprimentos de ponta a ponta, consulte Protegendo sua cadeia de suprimentos de ponta a ponta.