Dependências e Supply Chain
A segurança da nossa aplicação não depende apenas do código que escrevemos, mas de todo o ecossistema de bibliotecas que utilizamos.
1. Supply Chain Attacks
Ocorre quando um atacante compromete uma biblioteca popular e injeta código malicioso nela. Ao atualizar suas dependências, você acaba trazendo o código malicioso para dentro do seu projeto.
✅ Como fazer
- Use o arquivo de trava (
package-lock.jsonoupnpm-lock.yaml) para garantir que todos no time e no CI usem exatamente as mesmas versões. - Revise dependências novas antes de adicioná-las.
2. Auditoria de Dependências
Ferramentas que verificam se as bibliotecas instaladas possuem vulnerabilidades conhecidas (CVEs).
- npm audit / pnpm audit: Comando básico para verificar vulnerabilidades no projeto.
- Dependabot: Ferramenta do GitHub que abre Pull Requests automaticamente para atualizar dependências vulneráveis.
- Snyk: Plataforma avançada para análise de vulnerabilidades em dependências e código.
✅ Como fazer
- Execute
npm auditperiodicamente. - Não ignore alertas do Dependabot; trate-os com prioridade se forem de nível "High" ou "Critical".
3. Versionamento Seguro
- Use o prefixo
~(fixa a versão minor) ou evite prefixos para fixar a versão exata se a biblioteca for crítica. - Evite o uso de
*ou intervalos muito largos que podem trazer versões breaking changes ou maliciosas sem aviso.
4. Licenças de Software
Algumas licenças (como a GPL) podem exigir que você abra o código da sua aplicação. Auditorias de licença garantem que não estamos usando bibliotecas que conflitam com o modelo de negócio da empresa.