Correct Code, Vulnerable Dependencies: A Large Scale Measurement Study of LLM-Specified Library Versions
Este estudio de medición a gran escala revela que los LLM especifican con frecuencia versiones de bibliotecas de terceros vulnerables e incompatibles en el código Python generado debido a sesgos sistémicos hacia versiones específicas de alto riesgo, poniendo de manifiesto una superficie de riesgo crítica y previamente pasada por alto en el desarrollo de software asistido por IA.
Artículo original bajo licencia CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta es una explicación generada por IA del artículo a continuación. No ha sido escrita ni avalada por los autores. Para mayor precisión técnica, consulte el artículo original. Leer descargo de responsabilidad completo
Imagina que estás contratando a un asistente personal superinteligente e increíblemente rápido para escribir código para tus proyectos de software. Este asistente, impulsado por un Modelo de Lenguaje Grande (LLM), es excelente escribiendo la lógica: "Así es como se cierra una puerta con llave" o "Así es como se envía un mensaje".
Pero hay un truco. Para que el código funcione, el asistente necesita utilizar "herramientas" (bibliotecas de terceros) que ya existen. El problema que investiga este documento es que el asistente no solo toma las herramientas; toma versiones específicas, desactualizadas y a veces rotas de esas herramientas, y lo hace sin que te des cuenta.
Aquí tienes un desglose de los hallazgos del estudio utilizando analogías simples:
1. La "Receta" vs. La "Lista de la Compra"
Los investigadores probaron dos formas de pedirle al asistente que escriba código:
- Modo "En línea" (Inline): Pides un fragmento de código y el asistente escribe el código y añade una pequeña nota junto a cada herramienta diciendo: "Usa la Herramienta X, Versión 1.0".
- Modo "Manifiesto" (Manifest): Pides al asistente que escriba un fragmento de código y una lista de la compra separada (un archivo
requirements.txt) para las herramientas.
El Hallazgo:
Cuando se le pidió la nota "En línea", el asistente fue muy entusiasta en especificar versiones exactas (el 95% de las veces). Pero cuando se le pidió la "Lista de la compra", de repente se volvió perezoso y vago, a menudo dejando los números de versión en blanco (solo entre el 6% y el 59% de las veces).
- Analogía: Es como un chef que, cuando se le pide escribir una receta, dice: "Usa exactamente sal de la cosecha de 2015". Pero cuando se le pide escribir una lista de la compra para toda la cocina, simplemente escribe "Sal" y deja que tú averigües qué año de sal comprar.
2. El Problema de la "Leche Vencida" (Riesgos de Seguridad)
El estudio encontró que cuando el asistente sí elige una versión específica, a menudo elige una que es peligrosa.
- La Estadística: Entre el 37% y el 56% de las veces, la versión específica que el asistente eligió tenía una vulnerabilidad de seguridad conocida (un "CVE").
- La Severidad: La mayoría de estas vulnerabilidades eran de severidad "Crítica" o "Alta".
- El Giro: Estas vulnerabilidades no eran secretas. Eran de conocimiento público antes de que el asistente fuera entrenado. El asistente simplemente no sabía evitarlas.
- Analogía: Imagina que el asistente es un viajero del tiempo que siempre elige leche que venció hace tres años. Aunque la fecha de caducidad estaba impresa en el cartón hace años, el asistente sigue entregándote esa misma leche vencida, pensando que está fresca.
3. El Efecto de "Convergencia" (Todos Eligen la Misa Cosa Mala)
Podrías pensar que diferentes modelos de IA elegirían versiones diferentes. No lo hacen.
- El Hallazgo: Los diez modelos probados (de Google, OpenAI, Alibaba, etc.) convergieron exactamente en el mismo pequeño conjunto de versiones riesgosas. Si el asistente elige "Herramienta X", casi siempre elige "Versión 2.31.0", incluso si existen versiones más nuevas y seguras.
- Analogía: Es como si cada persona en una ciudad, independientemente de su trasfondo, decidiera comprar el mismo par de zapatos que se sabe que tienen una suela rota. No es una coincidencia; es un hábito compartido aprendido de los mismos libros de texto antiguos.
4. El Problema de la "Llave Rota" (Compatibilidad)
Incluso si la herramienta no es peligrosa, podría no encajar.
- El Hallazgo: Las versiones que los asistentes eligieron a menudo no se podían instalar o no funcionaban con el código que escribieron.
- Verificación Estática: El código ni siquiera se instalaba (como intentar poner un clavo cuadrado en un agujero redondo).
- Verificación Dinámica: Incluso si se instalaba, el código fallaba cuando intentabas ejecutarlo.
- La Causa: A los asistentes les encanta elegir versiones muy antiguas de herramientas. Estas versiones antiguas dependen de partes del sistema informático que han sido eliminadas en las computadoras modernas.
- Analogía: El asistente escribe un código que dice: "Enciende la luz", pero especifica una bombilla de 1990 que requiere un zócalo que no existe en tu casa de 2026. El código es perfecto, pero la bombilla no se atornilla.
5. ¿Por qué no podemos simplemente "Decirle" al Asistente que sea Mejor?
Los investigadores probaron varias cosas para solucionar esto:
- El Prompt "Por favor, sé seguro": Le dijeron al asistente: "Por favor, no uses versiones con agujeros de seguridad".
- Resultado: No funcionó. El asistente seguía eligiendo las versiones malas.
- Por qué: El asistente no está "olvidando" las reglas; simplemente no está conectado a una base de datos en vivo de advertencias de seguridad. Es como pedirle a un estudiante que memorizó un libro de texto de 2023 que evite una nueva ley aprobada en 2025. Literalmente no tiene esa información en su cabeza.
- La Solución de "Anclaje Externo": Cuando los investigadores obligaron al asistente a usar una lista preaprobada de versiones seguras (como una lista de la compra estricta proporcionada por un humano), los problemas desaparecieron.
- Resultado: Los riesgos de seguridad disminuyeron y el código realmente funcionó.
La Conclusión
El documento concluye que los LLM son excelentes escribiendo la "lógica" del código, pero son terribles gestionando la "cadena de suministro" de herramientas.
Actúan como un bibliotecario servicial pero poco fiable que te entrega un libro que parece perfecto pero que en realidad es una edición peligrosa y desactualizada. No puedes confiar en los números de versión específicos que sugieren. Debes tratarlos como un borrador y siempre verificar los números de versión con una herramienta de seguridad antes de usarlos.
El problema no es que la IA sea "tonta"; es que la IA está entrenada con datos antiguos que la hacen preferir versiones populares pero antiguas, y carece de una conexión en vivo con las advertencias de seguridad actuales. Hasta que la IA esté conectada a herramientas de seguridad en vivo, el desarrollador humano debe ser quien verifique las fechas de caducidad.
¿Ahogado en artículos de tu campo?
Recibe resúmenes diarios de los artículos más novedosos que coincidan con tus palabras clave de investigación — con resúmenes técnicos, en tu idioma.