15 pontos por GN⁺ 2025-11-22 | Ainda não há comentários. | Compartilhar no WhatsApp
  • 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
    • É comprovadamente eficaz e bloqueia a maior parte dos ataques em larga escala
    • A implementação é muito simples e, na maioria das ferramentas, pode ser configurada gratuitamente
    • Exemplo com Dependabot
      version: 2
      - package-ecosystem: github-actions
        directory: /
        schedule:
          interval: weekly
        cooldown:
          default-days: 7
      
    • Incentiva comportamentos positivos de fornecedores de segurança: em vez de alertas excessivos ou autopromoção, estimula foco em detecção rápida

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.

Ainda não há comentários.