O código do computador gerado pela IA possui referências a bibliotecas de terceiros inexistentes e cria uma grande oportunidade para ataques da cadeia de suprimentos que envenenam programas legais com pacotes maliciosos que podem roubar dados, roubar backdoors e realizar outras ações malignas.
Este estudo, que utilizou os 16 modelos de linguagem grandes mais usados para gerar 576.000 amostras de código, significa que 440.000 das dependências dos pacotes incluídas são “apressadas” e estão ausentes. O modelo de código aberto é mais alucinado e links para bibliotecas onde 21% das dependências estão ausentes. As dependências são importantes componentes de código em que o código individual precisa funcionar corretamente. Os desenvolvedores de dependência salvam o aborrecimento do código de reescrita e são uma parte importante da moderna cadeia de suprimentos de software.
Flashback de alucinação de pacote
Essas dependências inexistentes representam ameaças à cadeia de suprimentos de software, exacerbando os chamados ataques de interrupção de dependência. Esses ataques funcionam acessando as dependências de componentes incorretas em um pacote de software. Por exemplo, publique um pacote malicioso e dê o mesmo nome que o nome legítimo, mas use um carimbo posterior. O software dependente do pacote pode escolher uma versão maliciosa em vez de uma versão legítima, pois o primeiro parece ser mais recente em alguns casos.
Essa forma de ataque, também conhecida como confusão do pacote, foi demonstrada pela primeira vez em 2021 com uma prova de conceito em que o código falsificado foi executado em uma rede pertencente a várias das maiores empresas que incluem Terra, Apple, Microsoft e Tesla. Esse é um tipo de técnica usada em ataques da cadeia de suprimentos de software, com o objetivo de envenenar o software com sua fonte para infectar todos os usuários a jusante.
“Quando um invasor publica um pacote com nomes de alucinação que contêm código malicioso, eles confiam em um modelo que sugere o nome para usuários inocentes”, disse Joseph Splacklen, Universidade do Texas, estudante e pesquisador principal do Dr. San Antonio, à ARS por e -mail. “Se um usuário confiar na saída do LLM e instalar um pacote sem verificação cuidadosa, a carga útil do invasor oculta no pacote malicioso será executado no sistema do usuário”.
Na IA, as alucinações ocorrem quando o LLM produz saída que é realmente incorreto, sem sentido ou completamente irrelevante para a tarefa atribuída. As alucinações são porque os LLMs têm sido comprovadamente preocupantes e difíceis de prever e melhorar. Em um artigo programado para ser apresentado no Simpósio de Segurança da Usenix 2025, eles chamam esse fenômeno de “alucinações de pacote”.
Neste estudo, os pesquisadores fizeram 30 testes, 16 em 16 linguagens de programação Python e 14 em JavaScript. Isso gerou 19.200 amostras de código por teste, com um total de 576.000 amostras de código. Das 2,23 milhões de referências de pacotes incluídas nessas amostras, 440.445, ou 19,7%, refere-se a pacotes inexistentes. Dessas 440.445 alucinações de pacotes, 205.474 tinham nomes de pacotes exclusivos.
Uma das coisas que potencialmente tornam as alucinações de pacotes úteis em ataques da cadeia de suprimentos é que 43% das alucinações de pacotes foram repetidas em mais de 10 consultas. “Além disso, por 58% das vezes, o pacote de alucinação é repetido várias vezes em 10 iterações, indicando que a maioria das alucinações não são meramente erros aleatórios, mas são fenômenos reproduzíveis que duram sobre várias iterações.