正确的代码,易受攻击的依赖项:LLM 指定库版本的大规模测量研究
Correct Code, Vulnerable Dependencies: A Large Scale Measurement Study of LLM-Specified Library Versions
摘要
大语言模型 (LLM) 现在主要参与软件开发工作流程,它们生成的代码通常包括用特定版本标识符注释的第三方库 (TPL) 导入。这些版本选择可能会带来安全和兼容性风险,但尚未经过系统研究。我们首次对 LLM 生成的 Python 代码中的版本级风险进行了大规模测量研究,在 PinTrace 上评估了 10 个 LLM,PinTrace 是 1,000 个 Stack Overflow 编程任务的策划基准。 LLM 在直接提示时倾向于指定版本标识符,比例为 26.83%-95.18%,而直接创建清单文件时则降至 6.45%-59.19%。在指定版本中,36.70%-55.70%的任务至少包含一个已知的CVE,其中62.75%-74.51%的任务具有严重或高严重性评级。在 72.27%-91.37% 的案例中,相关 CVE 在模型知识截止之前被公开披露。统计数据显示,所有模型都集中在同一小组有风险的发布版本上,这表明存在系统偏差,而不是孤立的模型错误。静态兼容率在19.70%到63.20%之间,安装失败是主要原因。动态测试用例以 6.49%-48.62% 的通过率确认了该模式。进一步的实验证实,这些失败可归因于版本选择而不是代码质量,并且外部锚定的版本约束大大减少了漏洞暴露和兼容性失败。我们的研究结果表明,LLM 版本选择是基于 LLM 的开发中先前被忽视的一流风险面。我们向评估模型的社区披露了这些发现,其中一些模型证实了这个问题。所有代码和数据集均已在 https://github.com/dw763j/PinTrace 上发布用于开放科学。