Correct Code, Vulnerable Dependencies: A Large Scale Measurement Study of LLM-Specified Library Versions

📄 arXiv: 2605.06279v1 📥 PDF

作者: Chengjie Wang, Jingzheng Wu, Xiang Ling, Tianyue Luo, Chen Zhao

分类: cs.SE, cs.AI

发布日期: 2026-05-07

备注: 35 pages, 8 figures

🔗 代码/项目: GITHUB


💡 一句话要点

大规模研究揭示LLM生成代码中库版本选择的安全漏洞与兼容性风险

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: LLM安全 代码生成 第三方库 版本选择 漏洞分析

📋 核心要点

  1. 现有方法缺乏对LLM生成代码中第三方库版本选择的安全性和兼容性风险的系统性研究。
  2. 通过大规模测量研究,评估LLM在生成代码时选择的库版本,并分析其潜在的安全漏洞和兼容性问题。
  3. 实验结果表明,LLM倾向于选择包含已知CVE的库版本,且兼容性较低,揭示了LLM版本选择的风险。

📝 摘要(中文)

大型语言模型(LLM)越来越多地参与到软件开发流程中,它们生成的代码通常包含带有特定版本标识符的第三方库(TPL)导入。这些版本选择可能带来安全和兼容性风险,但尚未得到系统研究。本文对LLM生成的Python代码中的版本级风险进行了首次大规模测量研究,在PinTrace(一个包含1000个Stack Overflow编程任务的基准)上评估了10个LLM。结果表明,直接提示时,LLM倾向于指定版本标识符(26.83%-95.18%),而在直接创建清单文件时,这一比例降至6.45%-59.19%。在指定的版本中,36.70%-55.70%的任务包含至少一个已知的CVE,其中62.75%-74.51%的CVE具有严重或高危等级。在72.27%-91.37%的案例中,相关的CVE在模型知识截止日期之前已公开披露。统计数据表明,所有模型都集中在同一小部分有风险的发布版本上,表明存在系统性偏差,而非孤立的模型错误。静态兼容率范围为19.70%至63.20%,安装失败是主要原因。动态测试用例证实了这一模式,通过率为6.49%-48.62%。进一步的实验证实,这些失败归因于版本选择,而非代码质量,并且外部锚定的版本约束可以显著降低漏洞暴露和兼容性失败。研究结果表明,LLM版本选择是基于LLM的开发中一个首要的、以前被忽视的风险面。已向评估模型的社区披露了这些发现,其中几个模型确认了该问题。所有代码和数据集已在https://github.com/dw763j/PinTrace上发布,以供开放科学研究。

🔬 方法详解

问题定义:论文旨在解决LLM在生成代码时,对第三方库版本选择不当所带来的安全漏洞和兼容性问题。现有方法缺乏对这一问题的系统性分析和评估,导致开发者难以识别和规避这些风险。LLM生成的代码可能依赖于过时或存在漏洞的库版本,从而引入安全风险,同时不同版本之间的不兼容性也可能导致程序运行失败。

核心思路:论文的核心思路是通过大规模测量研究,分析LLM在生成代码时选择的第三方库版本,并评估这些版本是否存在已知的安全漏洞(CVE)以及兼容性问题。通过统计分析不同LLM选择的版本分布、漏洞数量和兼容性指标,揭示LLM版本选择的风险模式和潜在问题。

技术框架:论文的技术框架主要包括以下几个阶段:1) 构建PinTrace基准数据集,包含1000个Stack Overflow编程任务;2) 使用10个不同的LLM生成Python代码,并记录其选择的第三方库版本;3) 分析生成的代码中使用的库版本,查找已知的CVE漏洞,并评估其严重程度;4) 评估生成的代码在不同环境下的兼容性,包括静态兼容性(安装成功率)和动态兼容性(测试用例通过率);5) 通过控制变量实验,验证版本选择是导致兼容性问题的主要原因。

关键创新:论文最重要的技术创新点在于首次对LLM生成代码中的第三方库版本选择进行了大规模的测量研究,揭示了LLM版本选择的风险,并提出了外部锚定的版本约束可以有效降低风险。该研究填补了LLM安全研究的一个空白,为开发者提供了有价值的参考。

关键设计:论文的关键设计包括:1) PinTrace基准数据集的设计,涵盖了各种常见的编程任务;2) 漏洞评估方法,使用NVD数据库查找已知CVE漏洞;3) 兼容性评估方法,包括静态安装测试和动态测试用例;4) 控制变量实验,通过固定代码质量,只改变版本选择,来验证版本选择是导致兼容性问题的原因。

📊 实验亮点

研究发现,36.70%-55.70%的LLM生成代码包含至少一个已知CVE,其中62.75%-74.51%的CVE具有严重或高危等级。静态兼容率范围为19.70%至63.20%,动态测试用例通过率为6.49%-48.62%。外部锚定的版本约束可以显著降低漏洞暴露和兼容性失败。

🎯 应用场景

该研究成果可应用于提升LLM辅助软件开发的安全性与可靠性。开发者可利用研究中发现的风险模式,改进LLM的代码生成策略,例如引入版本约束或漏洞检测机制。此外,该研究也为LLM安全评估提供了新的视角,可用于评估不同LLM的代码生成质量和安全性。

📄 摘要(原文)

Large language models (LLMs) are now largely involved in software development workflows, and the code they generate routinely includes third-party library (TPL) imports annotated with specific version identifiers. These version choices can carry security and compatibility risks, yet they have not been systematically studied. We present the first large-scale measurement study of version-level risk in LLM-generated Python code, evaluating 10 LLMs on PinTrace, a curated benchmark of 1,000 Stack Overflow programming tasks. LLMs tend to specify version identifiers when directly prompted at 26.83%-95.18%, while down to 6.45%-59.19% in creating a manifest file directly. Among the specified versions, 36.70%-55.70% of tasks contain at least one known CVE, and 62.75%-74.51% of them carry Critical or High severity ratings. In 72.27%-91.37% of cases, the associated CVEs were publicly disclosed before the model's knowledge cutoff. The statistics show all models converge on the same small set of risky release versions, indicating a systemic bias rather than isolated model error. Static compatibility rates range from 19.70% to 63.20%, with installation failure as the dominant cause. The dynamic test cases confirm the pattern by 6.49%-48.62% pass rates. Further experiments confirm that these failures are attributable to version selection rather than code quality, and that externally anchored version constraints substantially reduce both vulnerability exposure and compatibility failures. Our findings reveal LLM version selection as a first-class, previously overlooked risk surface in LLM-based development. We disclosed these findings to the community of the evaluated models, and several confirmed the issue. All the code and dataset have been released for open science at https://github.com/dw763j/PinTrace.