Slopsquatting
Slopsquatting é um ataque à cadeia de suprimentos de software que explora nomes de pacotes inventados por IA para induzir desenvolvedores a instalar dependências maliciosas.
Slopsquatting é um ataque à cadeia de suprimentos de software no qual um invasor publica um pacote malicioso com um nome inventado por um assistente de programação com IA e, em seguida, conta com desenvolvedores ou ferramentas automatizadas para instalá-lo. A armadilha transforma uma recomendação de dependência plausível em código executável de terceiros. Ela conecta alucinações em LLMs — informações fabricadas apresentadas como fatos — aos gerenciadores de pacotes usados para criar software.
O pesquisador de segurança Seth Larson cunhou o termo em abril de 2025, e Andrew Nesbitt o popularizou por meio de sua definição original de slopsquatting, creditando Larson. O nome combina slop de IA com "squatting", que se refere a reivindicar um nome de software que outras pessoas procurarão.
Como funciona o Slopsquatting#
Um modelo de linguagem de grande porte gera código que contém um nome de pacote inventado ou um comando de instalação. Um invasor identifica esse nome e publica um pacote com ele em um registro como PyPI ou npm. Quando a recomendação aparece novamente, a instalação obtém o pacote do invasor. Alucinações de pacotes podem se repetir em diferentes prompts e modelos, concentrando a demanda em nomes que os invasores podem reivindicar.
O estado do registro determina o resultado. Um nome não registrado causa uma falha de instalação; um nome controlado por um invasor é resolvido com sucesso e introduz código malicioso no ambiente. A confiança do desenvolvedor no assistente se torna uma via de acesso à cadeia de suprimentos de software.
Esse risco afeta tanto o desenvolvimento assistido por humanos quanto a programação agêntica. Um agente de IA com recursos de uso de ferramentas pode transformar uma dependência gerada em uma ação de instalação. O código de um pacote malicioso pode ser executado durante a instalação ou o uso posterior, expondo arquivos, credenciais e artefatos de compilação conforme as permissões do ambiente.
Como um pacote inventado chegou aos desenvolvedores#
Bar Lanyado publicou um pacote Python vazio chamado huggingface-cli depois que modelos de IA recomendaram essa dependência inexistente. Em 28 de março de 2024, o pacote alucinado havia recebido mais de 30.000 downloads legítimos em três meses. Instruções de instalação também apareceram no README de um repositório de pesquisa da Alibaba. A adoção do pacote vazio demonstrou que o nome de uma dependência inventada podia chegar a fluxos de trabalho reais de desenvolvimento.
A nomenclatura de pacotes adiciona outra fonte de confusão: um executável de linha de comando, um módulo importável e uma distribuição instalável podem ter nomes diferentes. Isso é importante no desenvolvimento de visão computacional quando os assistentes geram instruções de configuração do ambiente. O Ultralytics YOLO oferece suporte ao YOLO26 por meio do pacote Python ultralytics, que oferece fluxos de trabalho de treinamento, predição e exportação; conferir as instruções de instalação geradas com a identidade desse pacote trata da etapa de seleção de dependências em que o slopsquatting se infiltra.
Slopsquatting e ataques relacionados#
Estes termos descrevem mecanismos distintos que afetam a segurança das dependências:
- Alucinação de pacote: O modelo inventa uma dependência. O slopsquatting transforma esse erro de nomenclatura em uma arma por meio de um registro adversarial.
- Typosquatting: Um invasor registra um nome parecido com o de um pacote existente para capturar erros de digitação. O slopsquatting tem como alvo nomes gerados por IA.
- Confusão de dependências: Um gerenciador de pacotes obtém um pacote público quando a intenção era usar uma dependência privada.
- Injeção de prompt: Conteúdo controlado por um invasor redireciona o comportamento de um sistema de IA. O slopsquatting explora uma recomendação de pacote gerada por meio do registro.
Como prevenir slopsquatting em pipelines de compilação#
A aprovação de dependências estabelece o projeto, o publicador, o repositório de origem e o histórico de versões pretendidos antes da instalação. A revisão de dependências com foco em segurança se aplica tanto às adições geradas por IA quanto ao código escrito por humanos. A disponibilidade no registro confirma que um nome existe; verificar sua propriedade confirma de quem será o software executado. Fundamentar um assistente na documentação de pacotes aprovados fornece identidades de pacotes para essa revisão.
Na integração contínua, os controles de revisão gerenciam as alterações nas dependências antes que elas entrem em uma compilação. As versões fixadas identificam versões aprovadas, enquanto os hashes dos artefatos identificam os arquivos exatos. O isolamento de agentes, o acesso restrito à rede e as credenciais com privilégios mínimos limitam os recursos disponíveis para o código das dependências, reduzindo o acesso dele a dados confidenciais e credenciais de implantação.
O modo de instalação com verificação de hash do Python usa --require-hashes para verificar os arquivos de pacotes baixados em relação aos hashes registrados em um arquivo de requisitos. Cada dependência, incluindo dependências transitivas — as bibliotecas exigidas por outras bibliotecas —, deve ter uma versão exata e hashes de artefatos permitidos. Quando o hash de um pacote baixado não corresponde a nenhum dos hashes permitidos, o pip rejeita o arquivo e interrompe a instalação.










