GitHub 项目中 Copilot 生成代码的安全弱点:一项实证研究
软件工程
2025-02-07 v4 密码学与安全
摘要
利用大语言模型(LLMs)等 AI 模型的现代代码生成工具因其生成可用代码的能力而日益流行。然而,它们的使用带来了安全挑战,常导致不安全代码合入代码库。因此,评估生成代码的质量,尤其是其安全性,至关重要。尽管先前研究探讨了代码生成的各个方面,但对安全性的关注有限,大多考察的是受控环境中而非开源开发场景中所产生的代码。为弥补这一空白,我们开展了一项实证研究,分析了来自 GitHub 项目的由 GitHub Copilot 及另外两种 AI 代码生成工具(即 CodeWhisperer 和 Codeium)生成的代码片段。我们的分析识别出 733 个片段,揭示出存在安全弱点的高可能性:29.5% 的 Python 片段和 24.2% 的 JavaScript 片段受影响。这些问题涵盖 43 个通用弱点枚举(CWE)类别,包括重要的如 CWE-330:使用不充分随机值、CWE-94:代码生成控制不当,以及 CWE-79:跨站脚本。值得注意的是,其中八个 CWE 位列 2023 年 CWE Top-25,凸显其严重性。我们进一步考察了使用 Copilot Chat 通过向其提供来自静态分析工具的警告信息来修复 Copilot 生成代码中的安全问题,最多可修复 55.5% 的安全问题。最后,我们给出了缓解生成代码中安全问题的建议。
引用
@article{arxiv.2310.02059,
title = {Security Weaknesses of Copilot-Generated Code in GitHub Projects: An Empirical Study},
author = {Yujia Fu and Peng Liang and Amjed Tahir and Zengyang Li and Mojtaba Shahin and Jiaxin Yu and Jinfu Chen},
journal= {arXiv preprint arXiv:2310.02059},
year = {2025}
}
备注
Preprint accepted for publication in ACM Transactions on Software Engineering and Methodology (TOSEM), 2025