- Cooldown de dependências (dependency cooldown) é uma técnica de segurança simples e eficaz capaz de mitigar a maior parte dos ataques à cadeia de suprimentos de código aberto
- Normalmente, atacantes comprometem projetos populares de código aberto para distribuir código malicioso, mas na maioria dos casos a janela de exposição dura menos de uma semana
- Ao configurar um cooldown para esperar um período após o lançamento de uma nova versão, como 7 dias, é possível reduzir bastante o risco de infecção causado por atualizações automáticas
- Dependabot, Renovate, pnpm e outras ferramentas já oferecem suporte nativo a cooldown, com configuração simples e sem custo adicional
- Se cooldowns forem oferecidos por padrão no nível do gerenciador de pacotes, isso pode fortalecer a segurança da cadeia de suprimentos e reduzir alertas desnecessários
Estrutura dos ataques à cadeia de suprimentos e seus problemas
- A maioria dos ataques à cadeia de suprimentos (supply chain attack) segue o mesmo padrão
- O atacante obtém acesso por meio de roubo de credenciais de um projeto popular de código aberto ou de vulnerabilidades em CI/CD
- Envia alterações maliciosas para canais de distribuição como PyPI, npm etc.
- Usuários instalam a versão infectada por causa de atualizações automáticas ou da falta de fixação de versão
- Um fornecedor de segurança detecta o problema e emite um alerta, depois o repositório de pacotes remove a versão afetada
- O intervalo entre as etapas (1) e (2) costuma ser longo, mas das etapas (2) a (5) tudo acontece em horas ou poucos dias, o que torna curta a janela de ação do atacante
- Janela de oportunidade dos principais casos nos últimos 18 meses
- xz-utils: cerca de 5 semanas
- Ultralytics: 12 horas (etapa 1), 1 hora (etapa 2)
- tj-actions: 3 dias
- chalk: menos de 12 horas
- Nx: 4 horas
- rspack: 1 hora
- num2words: menos de 12 horas
- Kong Ingress Controller: cerca de 10 dias
- web3.js: 5 horas
- Desses casos, 8 tiveram duração de ataque inferior a 1 semana, e a maioria poderia ter sido bloqueada com cooldown
Conceito e efeito do cooldown
- Cooldown é uma forma de adiar o uso de uma nova dependência por um determinado período após sua publicação
- Durante esse período, fornecedores de segurança podem detectar se ela é maliciosa
- Vantagens
Conclusão e recomendações
- Em 8 de 10 casos, os ataques duraram uma semana ou menos, e um cooldown de 7 dias seria suficiente para bloquear a maioria
- Com um cooldown de 14 dias, seria possível se defender de todos os casos, exceto xz-utils
- Cooldown não é uma solução perfeita, mas é uma forma simples de reduzir o risco de exposição em 80% a 90%
- Além de Dependabot e Renovate, é necessário melhorar o suporte para que os próprios gerenciadores de pacotes ofereçam cooldown por padrão
- A segurança da cadeia de suprimentos não é apenas um problema técnico, mas também uma questão de estrutura social de confiança; ainda assim, cooldown é uma mitigação prática e útil
Ainda não há comentários.