lunes, abril 01, 2024

Developers: Cuidado que ChatGPT o Gemini te pueden recomendar instalar malware con Package Hallucinations

Las Hallucinations o Alucinaciones de los modelos LLM son uno de los problemas de seguridad recogidos en el OWASP TOP 10 para LLM Apps & Services. Este problema hace que el modelo se invente respuestas que suena plausibles, aunque están lejos de ser una realidad. Y puede que se hagan realidad pero de una manera maliciosa para troyanizar tu código, como vamos a ver. 
En el mundo de los developers, las Hallucinations son un problema serio, y hemos visto como nos puede dar respuestas con códigos que son inseguros o mucho peor, respuestas y soluciones a problemas de desarrollo que son directamente falsas, como vimos en el estudio que comparaba ChatGPT y StackOverflow.

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.


Este es otro camino que los malos van a utilizar para crear puntos de entrada de malware en los sistemas, pero si realmente quieres conocer este mundo, te recomiendo encarecidamente el libro de "Malware moderno: Técnicas avanzadas y su influencia en la industriade Sergio de los Santos en  0xWord que va a hacer que te explote la cabeza.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


No hay comentarios:

Publicar un comentario