O blog de segurança da FireAI

Por FireAI Security & Research Team · Publicado

Slopsquatting: Quando o Seu Assistente de Programação com IA Inventa um Pacote, e Outra Pessoa o Regista

Slopsquatting: Quando o Seu Assistente de Programação com IA Inventa um Pacote, e Outra Pessoa o Regista

Peça a um assistente de programação para resolver um problema e ele irá, por vezes, recomendar a instalação de um pacote: pacotes reais para tarefas comuns, e, com uma frequência mensurável, pacotes que não existem de todo. Inventou um nome plausível porque o padrão de código à sua volta pedia uma dependência ali. Se você ou o seu agente de programação correr o comando de instalação mesmo assim, o que estiver de facto registado sob esse nome no PyPI ou no npm é o que acaba na sua máquina. O investigador de segurança Seth Larson, residente-programador da Python Software Foundation, deu ao ataque resultante o nome de "slopsquatting", registar os nomes que os modelos alucinam, o equivalente gerado por IA ao typosquatting.

Com que frequência isto realmente acontece

Uma equipa da Universidade do Texas em San Antonio, do Virginia Tech e da Universidade de Oklahoma mediu-o diretamente: "We Have a Package for You!", aceite na USENIX Security 2025. Ao longo de 576 mil amostras de código geradas por 16 modelos populares em duas linguagens, encontraram pacotes alucinados em "pelo menos 5,2 por cento para os modelos comerciais e 21,7 por cento para os modelos de código aberto", totalizando 205 474 nomes de pacotes alucinados únicos. Isto não é um caso raro e isolado; para alguns modelos de código aberto, é aproximadamente uma em cada cinco dependências sugeridas.

Spracklen et al., USENIX Security 2025, arXiv:2406.10279. Médias entre os 16 modelos testados; os modelos individuais variaram.
Classe de modeloTaxa de alucinação (das recomendações de pacotes)
Modelos comerciais (média)pelo menos 5,2 por cento
Modelos de código aberto (média)pelo menos 21,7 por cento

Por que isto é apropriável, e não apenas errado

Um nome inventado isolado seria um incómodo, não uma superfície de ataque. O que o torna explorável é a repetição: como reportou o The Register a 12 de abril de 2025, quando os investigadores repetiram o mesmo pedido dez vezes, "43 por cento dos pacotes alucinados repetiram-se sempre, e 39 por cento nunca voltaram a aparecer." Perto de metade dos nomes alucinados não são ruído aleatório; são a mesma suposição a que o modelo recorre de forma fiável perante código semelhante. Um atacante não precisa de adivinhar o que um programador específico vai escrever. Pode correr os mesmos modelos contra pedidos comuns, recolher os nomes que se repetem, e registá-los no índice real de pacotes, antecipadamente.

Ilustrativo: o momento de risco
pip install fast-json-normalizer   # suggested by a coding assistant
Collecting fast-json-normalizer
  Downloading fast-json-normalizer-0.3.1.tar.gz
Running setup.py install for fast-json-normalizer ... done
# Nothing here indicates whether this name was ever a real, reviewed project
# or was registered specifically because models keep suggesting it.

Por que isto encaixa no padrão que a OWASP já acompanha

Isto é uma variante daquilo a que o Top 10 da OWASP para Aplicações LLM chama um risco de cadeia de fornecimento para o desenvolvimento assistido por IA: a fronteira de confiança que costumava estar em "um humano escolheu acrescentar esta dependência" desloca-se para "a completação de padrões de um modelo escolheu-a", e a completação de padrões não tem nenhuma noção de se um nome é real.

O que fazer de facto quanto a isto

  • Trate cada nome de pacote que um agente de programação sugere como uma sugestão a verificar, não como uma dependência já conhecida como boa, da mesma forma que trataria um nome que um colaborador júnior escreveu de memória.
  • Verifique a data de registo e o histórico de transferências antes de instalar qualquer coisa desconhecida; um pacote que apareceu recentemente e está suspeitosamente bem ajustado a um padrão comum de pedido gerado por IA merece um segundo olhar.
  • Fixe as dependências e use um ficheiro de bloqueio (lockfile), para que um nome alucinado que tenha entrado uma vez não seja silenciosamente reresolvido mais tarde.
  • Vigie o que um pacote recém-instalado faz de facto na primeira execução. Uma dependência recém-registada a contactar um servidor com quem não tem nada que ver é um sinal que uma firewall consegue apanhar mesmo quando uma revisão de código deixou passar o nome.

O papel do FireAI e da HisnLabs

A squatted package that phones home still has to make a connection to do it, from a Python or Node process you just ran; FireAI shows you that connection, the process behind it and where it is going, before you decide whether it belongs there.

O FireAI é o produto da HisnLabs: uma firewall com IA que corre diretamente no seu Mac. Mostra, em linguagem clara, cada ligação que as suas aplicações fazem e deixa-o decidir o que sai do seu Mac — a IA funciona localmente, pelo que o seu tráfego nunca é enviado para nós nem para mais ninguém. A equipa de investigação em segurança da HisnLabs é quem mantém essas decisões fiáveis: cataloga que domínios são simples telemetria e quais são um serviço real, acompanha o país e a rede por detrás de uma ligação e treina o modelo local (a funcionalidade Autopilot) com padrões de tráfego reais, sem que nada disso saia do seu Mac.

Pode ler as decisões técnicas por detrás dele, ou experimentar o FireAI durante 17 dias, em FireAI, da HisnLabs.

Fontes