Hoy quería hablaros de un estudio llevado a cabo por
Bar Lanyado, que habla de los riesgos de los
Package Hallucinations en
LLM, que básicamente se basa en pedirle ayuda a servicios como
ChatGPT o Gemini para que nos de soluciones de desarrollo y ver cómo se inventa paquetes de código que no existen, es decir, que están directamente inventados por el modelo.
El estudio inicial lo publicó en verano del año pasado, y lo explicaba de forma muy sencilla como este ejemplo en el que le pide a ChatGPT que le ayude a realizar una tarea con la base de datos ArangoDB, y ese le recomienda que se instale un paquete. Este paquete, como podéis imaginar, no existe.
Figura 4: ChatGPT recomienda el paquete arangodb en npm
Con este escenario, sabiendo que ésta es una alucinación posible, el atacante solo debe crearse un paquete malicioso con ese nombre, y con funcionalidad clonada del paquete original que sí realiza esas funciones, pero con código malicioso para que el atacante controle las instalaciones.
Figura 5: El paquete arangodb «not found» en npm
En la imagen siguiente se puede ver cómo
ChatGPT explica cómo instalar y utilizar un paquete malicioso que ha sido creado después de que se descubriera esta
Package Hallucination.
Figura 6: Explicación de cómo usar un paquete malicioso
Y la pregunta que alguien se podría hacer, ¿es esto un vector de ataque posible a escala? Bueno, pues esto es lo que ha seguido investigando el descubridor de esta técnica de ataque.
Package Hallucinations at scale
El investigador
ha seguido tirando del hilo, y lo ha probado con
47.803 preguntas tipo «
How To.
..?» sobre programación realizadas sobre
ChatGPT (GPT 3.5 y GPT 4),
Coral (Cohere) y
Gemini Pro (Bard) sobre lenguajes como
Python, Node.js, Ruby, .NET y
Go, y los resultados los tenéis en las tablas siguientes-
Como podéis ver, hay un alto porcentaje de «
Package Hallucinations» en todos los lenguajes, que además se van a repetir en todos los motores
LLM, es decir, hay muchas que son coincidencias entre ellas.
Y en la tabla siguiente tenéis las de Gemini Pro (Bard), donde como véis los resultados son más o menos similares a los casos anteriores. Eso sí, en este caso más del 65% de Package Hallucinations con un 14% de media de repetir la misma alucinación.
En el caso de Cohere, los resultados son similares, como podéis ver en esta última tabla de la imagen a continuación.
Vistos todos estos resultados, se pueden cruzar los datos para ver qué paquetes son los mismos en las alucinaciones que tienen GPT 3.5, GPT4, Gemini Pro (Bard) y Cohere en los diferentes lenguajes de programación, y los datos son estos.
Con estos resultados, se puede elegir bien qué paquetes maliciosos se quieren crear, ya que van a ser referenciados por las
Package Hallucinations de estos modelos
LLM y ver cuántos son los que se instalan estas librerías de
malware.
PoC Package Hallucinations: Huggingface-cli
Para terminar, me gustaría referenciar la PoC que han mostrado con uno de los paquetes alucinados por los motores, llamado huggingface-cli, que como podéis es recomendado en esta captura por ChatGPT para que el usuario se lo instale:
Para la
PoC, el investigador se creo un paquete con ese nombre en
pip totalmente vacío sólo para contar cuántos developers se lo instalaban porque procedía de estas
Package Hallucinations, y el resultados es brutal.
El resultado, como explican en el estudio, llevaba más de
30.000 descargas y contando, y es que si lo recomienda
ChatGPT y
Gemini, y además existe, el desarrollador va a tender a confiar en las revisiones de
pip y la comunidad, y no a plantearse que sea un
Package Hallucination.
Al final, los LLMs se están metiendo en nuestros procesos diarios, y en los de los desarrolladores también, así que hay que tener en cuenta este tipo de nuevos vectores de ataque, que van a ser sutiles y efectivos, como podéis ver, utilizando las alucinaciones de los LLMs para «weaponizar la distribución de malware«. Brutal.
¡Saludos Malignos!