Assistentes de código de IA estão gerando nomes de pacotes que não existem, e atacantes estão transformando essas alucinações em riscos reais para a cadeia de suprimentos.

Quando o pesquisador de segurança Bar Lanyado, da Lasso Security, pediu a uma ferramenta de codificação baseada em IA um cliente Python, o modelo sugeriu a instalação do huggingface-cli. O pacote é um fantasma; a biblioteca legítima existe sob o nome huggingface_hub. Para provar o perigo, Lanyado registrou o nome falso no Python Package Index (PyPI) como um placeholder vazio. Em três meses, o placeholder acumulou mais de 30.000 downloads, apareceu em documentações públicas e até surgiu em amostras de código coletadas dos repositórios da Alibaba.

Como um pacote fantasma se torna uma ameaça real

  1. Prompt → alucinação – Um desenvolvedor pede ajuda a uma IA. O modelo, treinado em dados ruidosos da internet, inventa um nome de pacote que parece plausível.
  2. Copiar e colar → documentação – A sugestão acaba em um README, em uma resposta do Stack Overflow ou em uma wiki interna. Uma vez escrito, o nome se espalha pela comunidade.
  3. Integração de código – O desenvolvedor, confiando na IA, adiciona o nome a um arquivo de requisitos e o envia para produção.

Por que as defesas existentes não detectam o problema

Ferramentas de análise estática e scanners de vulnerabilidade buscam por CVEs conhecidas e por bibliotecas com histórico de lançamento. Um pacote recém-publicado com zero downloads antes da sugestão da IA não possui CVE, não tem reputação e, portanto, parece limpo. A verificação padrão “a versão é vulnerável?” retorna falso, dando aos desenvolvedores uma falsa sensação de segurança.

O que o experimento prova

  • Nomes inventados por IA chegam à produção – Os mais de 30.000 downloads mostram que os desenvolvedores estão realmente baixando esses pacotes fantasmas.
  • Alucinações tornam-se documentação – Uma vez que um nome falso aparece em um guia público, ele pode persistir indefinidamente, propagando o erro.
  • O registro é trivial – Publicar um pacote no PyPI não custa nada e leva minutos, diminuindo a barreira para o abuso da cadeia de suprimentos.

Medidas defensivas que realmente funcionam

  • Valide cada dependência – Antes de adicionar um novo requisito, pesquise no índice de pacotes e confirme se o nome corresponde a uma biblioteca existente e documentada.
  • Faça uma verificação cruzada com fontes oficiais – Compare o nome sugerido com o repositório do fornecedor ou com o guia de instalação oficial.
  • Trate pacotes novos e de baixa adoção como alto risco – Sinalize qualquer dependência que tenha menos de alguns poucos downloads ou uma data de lançamento muito recente para revisão manual.

O que observar a seguir

A conclusão é simples: uma sugestão de IA não é uma garantia. Trate cada nova dependência como um componente de terceiros não verificado, verifique sua procedência e fique atento à cadeia de suprimentos antes de permitir que um pacote fantasma entre em produção.