Los investigadores de seguridad de la empresa de gestión de riesgos cibernéticos Vulcan.io publicaron una prueba de concepto de cómo los piratas informáticos pueden usar ChatGPT 3.5 para propagar código malicioso desde repositorios confiables.
La investigación llama la atención sobre los riesgos de seguridad inherentes a confiar en las sugerencias de ChatGPT para las soluciones de codificación.
Metodología
Los investigadores recopilaron preguntas frecuentes sobre codificación en Stack Overflow (un foro de preguntas y respuestas sobre codificación).
Eligieron 40 temas de codificación (como análisis sintáctico, matemáticas, tecnologías de raspado, etc.) y usaron las primeras 100 preguntas para cada uno de los 40 temas.
El siguiente paso fue filtrar las preguntas de “cómo hacer” que incluían paquetes de programación en la consulta.
Las preguntas formuladas estaban en el contexto de Node.js y Python.
Vulcan.io explica:
“Todas estas preguntas se filtraron con el lenguaje de programación incluido con la pregunta (node.js, python, go). Después de recopilar muchas preguntas frecuentes, redujimos la lista a solo las preguntas de “cómo hacer”.
Luego, le preguntamos a ChatGPT a través de su API todas las preguntas que habíamos recopilado.
Usamos la API para replicar cuál sería el enfoque de un atacante para obtener la mayor cantidad posible de recomendaciones de paquetes inexistentes en el menor espacio de tiempo.
Además de cada pregunta, y siguiendo la respuesta de ChatGPT, agregamos una pregunta de seguimiento en la que le pedimos que proporcionara más paquetes que también respondieran a la consulta.
Guardamos todas las conversaciones en un archivo y luego analizamos sus respuestas”.
Luego escanearon las respuestas para encontrar recomendaciones de paquetes de códigos que no existían.
Hasta el 35 % de los paquetes de códigos de ChatGPT fueron alucinaciones
De 201 preguntas de Node.js, ChatGPT recomendó 40 paquetes que no existían. Eso significa que el 20% de las respuestas de ChatGPT contenían paquetes de códigos alucinados.
Para las preguntas de Python, de 227 preguntas, más de un tercio de las respuestas consistieron en paquetes de códigos alucinados, 80 paquetes que no existían.
De hecho, las cantidades totales de paquetes inéditos fueron aún mayores.
Los investigadores documentaron:
“En Node.js, planteamos 201 preguntas y observamos que más de 40 de estas preguntas provocaron una respuesta que incluía al menos un paquete que no se había publicado.
En total, recibimos más de 50 paquetes npm inéditos.
En Python, hicimos 227 preguntas y, para más de 80 de esas preguntas, recibimos al menos un paquete sin publicar, lo que da un total de más de 100 paquetes de pip sin publicar”.
Prueba de concepto (PoC)
Lo que sigue es la prueba de concepto. Tomaron el nombre de uno de los paquetes de código inexistentes que se suponía que existían en el repositorio de NPM y crearon uno con el mismo nombre en ese repositorio.
El archivo que cargaron no era malicioso, pero llamó a casa para comunicar que alguien lo instaló.
Escriben:
“El programa enviará al servidor del actor de amenazas el nombre de host del dispositivo, el paquete del que proviene y la ruta absoluta del directorio que contiene el archivo del módulo…”
Lo que sucedió después es que apareció una “víctima”, hizo la misma pregunta que hizo el atacante, ChatGPT recomendó el paquete que contenía el código “malicioso” y cómo instalarlo.
Y efectivamente, el paquete está instalado y activado.
Los investigadores explicaron lo que sucedió después:
“La víctima instala el paquete malicioso siguiendo la recomendación de ChatGPT.
El atacante recibe datos de la víctima en función de nuestra llamada de preinstalación al nodo index.js al nombre de host largo”.
Una serie de imágenes de prueba de concepto muestran los detalles de la instalación por parte del usuario desprevenido.
Cómo protegerse de las malas soluciones de codificación de ChatGPT
Los investigadores recomiendan que antes de descargar e instalar cualquier paquete, es una buena práctica buscar señales que puedan indicar que el paquete puede ser malicioso.
Busque cosas como la fecha de creación, cuántas descargas se realizaron y la falta de comentarios positivos y la falta de notas adjuntas a la biblioteca.
¿Es ChatGPT confiable?
ChatGPT no fue entrenado para ofrecer respuestas correctas. Fue entrenado para ofrecer respuestas que suenen correctas.
Esta investigación muestra las consecuencias de ese entrenamiento. Esto significa que es muy importante verificar que todos los datos y recomendaciones de ChatGPT sean correctos antes de utilizarlo.
No acepte simplemente que el resultado es bueno, verifíquelo.
Específico para la codificación, puede ser útil tener mucho cuidado antes de instalar cualquier paquete recomendado por ChatGPT.
Lea la documentación original de la investigación:
¿Puedes confiar en las recomendaciones de paquetes de ChatGPT?
Imagen destacada de Shutterstock/Roman Samborskyi