Pular para o conteúdo principal

🚨 Ameaças à Cadeia de Fornecimento (Supply Chain)

🌟 Objetivo

Identificar os principais vetores de ataque na cadeia de fornecimento de software, com ênfase em dependências externas, e estabelecer contramedidas técnicas e organizacionais eficazes.

⚠️ Os ataques de supply chain são dos mais críticos na atualidade, pois exploram a confiança implícita em pacotes terceiros usados em build ou runtime.


🔧 Tipos comuns de ataque

Tipo de AmeaçaDescriçãoExemplo real
TyposquattingPacote com nome parecido ao de um famosolodashs em vez de lodash
Dependency ConfusionResolver pacotes do registo público em vez do privadointernal-lib publicado externamente
Hijack de contaConta de dev comprometida publica update maliciosoua-parser-js (2021)
Pacote abandonadoBiblioteca sem manutenção usada como vetorevent-stream (2018)
Code InjectionPayload malicioso no postinstall ou scriptnode-ipc (2022)

🔐 Estratégias de mitigação

1. Verificação de origem

  • Usar repositórios internos, proxies ou mirrors
  • Bloquear instalação de pacotes fora de origem aprovada

2. Monitorização de nomes

  • Auditar novos pacotes adicionados ao package.json, pom.xml, etc.
  • Usar alertas de typosquatting com ferramentas (ex: Socket.dev, npm-proxy-check)

3. Revisão de scripts embutidos

  • Detetar postinstall, preinstall, install com scripts executáveis
  • Usar flags como --ignore-scripts quando apropriado

4. Políticas de aprovação e timeout

  • Exigir revisão de pacotes novos antes de uso
  • Aplicar TTL a dependências abandonadas

5. Isolamento e validação de build

  • Usar ambientes limpos e imutáveis para build
  • Assinar artefactos e validar integridade

📖 Casos de estudo

event-stream

  • Pacote popular do npm com acesso transferido
  • Atualização introduziu dependência flatmap-stream com malware
  • Afetou aplicações financeiras

ua-parser-js

  • Hijack da conta npm do maintainer
  • Versão publicada com minerador de criptomoedas
  • Detetado pela comunidade via GitHub Actions

✅ Recomendações operacionais

PráticaAplicar em
Proxy interno com lista branca de origemTodos os projetos
Aprovação formal de novos pacotesL2 e L3
Scan de scripts maliciosos em pacotesL2 e L3
TTL para dependências não atualizadasL2 e L3
Alertas de typosquatting e nomes suspeitosL3 (elevado)

🔗 Ligações com outros ficheiros

DocumentoLigação com supply chain
03-governanca-libs-terceiros.mdAprovação de pacotes suspeitos ou com risco
04-integracao-ci-cd.mdExecução de validadores e scripts de bloqueio
07-controle-registos-origem.mdReforço de origem confiável e mirrors internos

🚫 O controlo da cadeia de fornecimento é inseparável da segurança moderna. Ignorá-la é confiar cegamente em código executado fora do teu controlo.