O Que É uma Dependência Maliciosa? Código Hostil na Sua Supply Chain
Uma dependência maliciosa é um pacote que faz o que anuncia enquanto também carrega código hostil, colocando um atacante em todo build que a instala.
Projetos modernos puxam centenas de pacotes de terceiros, e seu build confia em cada um deles para rodar scripts de install e enviar código. Uma dependência maliciosa abusa dessa confiança. Pode ser um pacote hostil novinho em folha, um legítimo sequestrado, ou um impostor de nome confuso. Uma vez instalada, ela roda com os privilégios do seu build.
Como elas entram
- Uma conta de mantenedor é comprometida e uma versão hostil é publicada.
- Um pacote é nomeado para ser confundido com um real (typosquatting).
- O nome de um pacote interno é sequestrado de um registry público (dependency confusion).
- Um novo pacote é publicado puramente para atacar quem quer que o instale.
O que elas fazem
Pacotes maliciosos comumente rodam scripts em tempo de install que leem variáveis de ambiente e exfiltram secrets, plantam backdoors, mineram criptomoeda ou adulteram a saída do build. O payload muitas vezes dispara no install, antes de qualquer um dos seus testes rodar.
Por que a CI é o alvo
Um laptop de desenvolvedor tem alguns secrets; um runner de CI tem os bons: deploy keys, credenciais de nuvem, chaves de assinatura. Uma dependência maliciosa que roda na CI acerta o jackpot, e é por isso que ataques de supply chain miram cada vez mais o pipeline.
Mantendo-as fora
Fixe dependências com um lockfile e versões exatas, revise novas dependências antes de adicioná-las, rode dependency scanning contra bases de dados de vulnerabilidades e malware e desative scripts de install onde puder. Uma software bill of materials torna possível reagir rápido quando um pacote ruim é divulgado.
Limitando o raio de dano
Se um pacote malicioso rodar, o isolamento e o menor privilégio decidem quão ruim fica. Runners efêmeros com credenciais escopadas e de vida curta e filtragem de egress significam que um script de install hostil encontra pouco para roubar e nenhum lugar para enviar.
Principais conclusões
- Uma dependência maliciosa carrega código hostil ao lado de funcionalidade legítima.
- Typosquatting, dependency confusion e account takeover são os principais caminhos de entrada.
- Lockfiles, scanning, revisão e menor privilégio as mantêm fora e as contêm.