Mentiras, descaradas mentiras y alucinaciones de la IA: por qué tu próximo proyecto podría convertirse en una mina de oro para los hackers gracias a paquetes inventados

Mentiras, descaradas mentiras y alucinaciones de la IA: por qué tu próximo proyecto podría convertirse en una mina de oro para los hackers gracias a paquetes inventados

Cuanto más inteligente es la IA, más fácil es que te infiltre un virus.

image

La IA puede generar código, pero no siempre de forma segura. Un nuevo estudio, que se presentará en la conferencia USENIX Security Symposium en 2025, demostró que los modelos LLM, al crear código, a menudo inventan dependencias de bibliotecas inexistentes. Este comportamiento, denominado "alucinación de paquetes" (package hallucination), no solo reduce la calidad del código, sino que también incrementa seriamente los riesgos para la cadena de suministro del software.

El análisis abarcó 576.000 fragmentos de código generados por 16 modelos diferentes, tanto comerciales como de código abierto. En total, estos ejemplos contenían más de 2,23 millones de referencias a bibliotecas de terceros. De ellas, casi 440.000 (19,7%) apuntaban a paquetes inexistentes. Este fenómeno fue especialmente común en modelos abiertos como CodeLlama y DeepSeek, con un promedio de falsas dependencias cercano al 22%. En los modelos comerciales, como ChatGPT, esta cifra fue ligeramente superior al 5%, lo cual se atribuye a una arquitectura más robusta y una mejor configuración.

Lo más alarmante fue que estas “alucinaciones” no eran aleatorias. El 43% de las falsas dependencias se repitieron en más de 10 solicitudes. En el 58% de los casos, un mismo paquete inventado apareció varias veces dentro de 10 iteraciones. Esto los convierte en objetivos ideales para ataques de tipo "confusión de dependencias", donde se sustituyen componentes legítimos por otros maliciosos con nombres similares. Si un atacante publica un paquete con ese nombre de antemano, su código puede descargarse y ejecutarse automáticamente al compilar el proyecto, especialmente si aparenta ser una versión más reciente.

Ya se han demostrado ataques de este tipo en condiciones reales — en 2021, investigadores lograron inyectar código malicioso en las infraestructuras de gigantes como Apple, Microsoft y Tesla mediante la sustitución de dependencias. La vulnerabilidad surge cuando el sistema prioriza un paquete con un número de versión más alto, incluso si proviene de una fuente no verificada. Ahora, los modelos de inteligencia artificial pueden sugerir involuntariamente nombres de estos paquetes ficticios, inexistentes en repositorios oficiales.

El estudio también reveló que el código en JavaScript es más propenso a las falsas dependencias que el código en Python: 21% frente a casi 16%. Los investigadores atribuyen esto a la mayor complejidad y tamaño del ecosistema JavaScript, así como a su espacio de nombres más confuso, lo que dificulta que el modelo recuerde con precisión los nombres de los paquetes.

Según los autores, ni el tamaño del modelo de código abierto ni las diferencias arquitectónicas dentro de este grupo influyen significativamente en el nivel de alucinaciones. Mucho más determinantes son el volumen de datos de entrenamiento, los mecanismos de ajuste fino y las protecciones contra comportamientos inseguros. En los LLM comerciales (como ChatGPT), donde estos procesos están más desarrollados, la cantidad de dependencias falsas es considerablemente menor.

Dado que la mayoría de los desarrolladores modernos integran bibliotecas de terceros para acelerar el trabajo y reducir el código manual, la alucinación de paquetes se vuelve especialmente peligrosa. Microsoft declaró anteriormente que en solo cinco años, hasta el 95% del código será generado por IA, lo que significa que confiar ciegamente en sus recomendaciones podría llevar a una infección masiva de la infraestructura desde la fase de compilación.

Esta amenaza resalta la necesidad de medidas adicionales para controlar la seguridad del proceso de compilación del software, incluyendo la verificación manual de los nombres de los paquetes, la restricción de las fuentes de descarga, el monitoreo de nuevas publicaciones en repositorios públicos y la implementación de mecanismos de protección a nivel de los sistemas de gestión de dependencias.

Кто завёл космические часы — и зачем нам вообще знать ответ?

Философско-научное размышление о границах познания, бессмысленных вопросах и странной привычке искать Смысл с большой буквы.