Cadeia de abastecimento
O que é slopsquatting?
O slopsquatting é um ataque que regista nomes de pacotes inventados por assistentes de programação com IA. Quando um modelo sugere um pacote que não existe, um atacante pode publicar malware com esse nome, e o próximo programador ou agente a seguir a sugestão instala-o. É typosquatting sem o erro de escrita.
Atualizado a
De onde vem o nome
O termo é um jogo de palavras com typosquatting, em que "slop" significa resultados de IA de baixa qualidade. É atribuído a Seth Larson, security developer-in-residence da Python Software Foundation, em 2025.
Como surgem os pacotes alucinados
Um modelo de linguagem escreve o que parece provável. Um nome plausível, como o de uma biblioteca para uma tarefa comum, pode parecer tão provável como um nome real, pelo que o modelo escreve por vezes uma importação ou um comando de instalação para um pacote que nunca ninguém publicou.
Um estudo apresentado na USENIX Security 2025 testou 16 modelos populares em 576.000 amostras de código. A percentagem de pacotes alucinados foi de pelo menos 5,2% nos modelos comerciais e de 21,7% nos modelos open source, com 205.474 nomes inventados únicos. Os investigadores descreveram o problema como persistente e sistémico.
Como funciona um ataque de slopsquatting
- Recolher os nomes. O atacante faz aos modelos perguntas comuns de programação e anota que pacotes não existem.
- Publicá-los. Regista esses nomes no npm ou no PyPI, com um pacote funcional que esconde uma carga maliciosa.
- Esperar. Um programador cola a sugestão, ou um agente de programação executa a instalação por sua conta.
- Executar. Um script de instalação é executado na máquina do programador ou na CI, com acesso a tokens e segredos.
Slopsquatting vs typosquatting
| Typosquatting | Slopsquatting | |
|---|---|---|
| Origem do erro | Uma pessoa escreve mal um nome | Um modelo inventa um nome |
| O nome | Próximo de um pacote real | Plausível, sem nenhum pacote real por trás |
| Quem o instala | Um programador | Um programador, ou um agente sem nenhuma pessoa a ler o nome |
| Porque é mais difícil de detetar | As verificações de semelhança podem compará-lo com nomes populares | Pode não haver nenhum nome popular com que o comparar |
Porque é que os agentes de programação aumentam o risco
Com um assistente de chat, uma pessoa lê a sugestão antes de a executar. Um agente de programação pode escrever o código, adicionar a dependência e executar a instalação num único passo. A verificação humana que apanha muitos nomes errados desaparece, e a instalação acontece onde quer que o agente seja executado, muitas vezes com as credenciais do programador ou dentro da CI. Para uma visão mais ampla, consulte segurança no desenvolvimento com IA.
Como se proteger do slopsquatting
- Verifique antes de instalar. Confirme que um pacote sugerido existe, tem um repositório real e tem histórico. Um pacote criado na semana passada merece desconfiança.
- Reveja as alterações ao lockfile. As novas dependências devem ser visíveis nos pull requests, seja quem for ou o que for que tenha escrito o código. Consulte o que um lockfile regista.
- Limite o que os agentes podem fazer. Exija aprovação antes de um agente instalar pacotes e execute os agentes numa sandbox sem credenciais de produção.
- Atrase os novos pacotes. Uma regra contra pacotes publicados nos últimos dias ajuda.
- Desative os scripts de instalação sempre que o seu build o permita.
- Restrinja o tráfego de saída dos builds. Um pacote que não consegue alcançar o atacante não pode enviar os seus segredos para lado nenhum. Consulte política de egress do GitHub Actions.
Um novo pacote de slopsquatting não tem aviso de segurança, pelo que uma análise SCA ou o npm audit não o reportam. Para a lista completa de controlos, consulte boas práticas de segurança da cadeia de abastecimento de software.
Como o CRACI limita os danos
O CRACI não deteta novos pacotes maliciosos, pelo que deve avaliá-los com outras ferramentas. O que faz é limitar os danos quando um deles chega ao seu build. Como seu runner de GitHub Actions, aplica uma política de egress que bloqueia as ligações de que o build não precisa, o que o protege mesmo quando ninguém viu o ataque antes. Regista também cada pacote que cada job obteve, pelo que, assim que um pacote malicioso é conhecido, pode ver que builds o trouxeram.
Slopsquatting: perguntas frequentes
O que é slopsquatting?
Um ataque em que alguém regista nomes de pacotes inventados por assistentes de programação com IA, para que quem seguir a sugestão instale o código do atacante.
Quem criou o termo slopsquatting?
É atribuído a Seth Larson, security developer-in-residence da Python Software Foundation, em 2025.
O que é um pacote alucinado?
Um nome de pacote que um modelo de IA sugere apesar de esse pacote não existir. A investigação encontrou isto numa parte significativa das amostras de código geradas.
Em que é que o slopsquatting difere do typosquatting?
O typosquatting depende de uma pessoa escrever mal o nome de um pacote real. O slopsquatting depende de um modelo inventar um nome que nunca existiu, pelo que não há nenhum pacote real com que o comparar.
Como evitar o slopsquatting?
Verifique se os pacotes sugeridos são reais, reveja as novas dependências nos pull requests, exija aprovação antes de os agentes instalarem o que quer que seja e restrinja o tráfego de saída dos builds.
Contenha o pacote que ninguém queria instalar
Bloqueie as ligações de saída de que os seus builds não precisam e mantenha um registo de cada pacote que obtiveram.
Marcar demo