100多套小程序源码怎么弄(用于代码编写的大型语言模型:安全评估)

wufei123 发布于 2024-08-17 阅读(10)

评估大型语言模型生成的代码安全性的最新工作

作者·何旭增 (ORCID: 0009–0005–7317–7426)介绍随着当今大型语言模型 (LLM) 的激增,开发人员使用大型语言模型来辅助他们日常代码编写的趋势正在上升著名的产品包括 GitHub Copilot 或简称 ChatGPT。

然而,就像那些由人类开发人员编写的代码一样,LLM 生成的代码有时也会有很多安全风险例如,有一种流行的称为“越界写入”,它可能允许攻击者将恶意信息写入计算机内存中,以进行某些潜在的犯罪活动在这篇文章中,我们介绍了一些评估大型语言模型生成的代码安全性的最新努力,以便人们可以对此类模型在一般情况下或给定某些特定任务时的不可靠性有一些基本的想法。

通过 CWE 进行系统实验常见弱点枚举 (CWE) 是由 MITRE 运营的系统,用于对安全漏洞进行分类,包括 400 多个与软件安全风险相关的类别例如,前面提到的安全风险“越界写入”被分配给“CWE-787”。

通过使用CWE作为评估生成代码安全风险的指标,可以很容易地系统地分析一组安全漏洞在最近的一项研究中,为了深入了解“GitHub Copilot 的建议是否通常不安全”这个问题,GitHub Copilot 生成的代码针对 MITRE 的 CWE 子集进行了评估。

更具体地说,Copilot的行为是从三个维度研究的,包括弱点的多样性,提示的多样性和领域的多样性GitHub Copilot 是由 GitHub 和 OpenAI 开发的代码完成工具,通过自动完成代码来帮助 Visual Studio Code、Visual Studio、Neovim 和 JetBrains 集成开发环境 (IDE) 的用户。

对于弱点的多样性,每个适用的“前 25 名”CVE 都构建了三种不同的场景,这些场景被构建为等待 Copilot 填写的小型、不完整的程序作为代码评估,CodeQL 软件扫描与手动检查一起使用,以评估返回的建议是否容易受到该 CWE 的攻击。

接下来,对于提示的多样性,评估不同的提示(也就是我们给模型的输入)对 Copilot 返回易受选定 CWE(e.g. SQL注入)影响的建议的可能性的影响最终,对于域的多样性,Copilot 生成的代码的安全性也通过关注 Copilot 在执行添加到 CWE 的新域(例如用另一种编程语言编写的代码)时的行为来评估。

在这种情况下,从安全角度来看,Copilot 对这些场景的响应喜忧参半,其中大约 40% 的生成结果被发现是易受攻击的用户研究除了一般的系统测试外,还积极进行用户研究,以评估生成代码的安全性最近,我们开展了一项安全驱动的用户研究,以评估学生程序员在LLM的协助下编写的代码。

这项研究的学生是通过社交媒体招募的,并随机分为“对照组”(无法学硕士访问权限)和“辅助”(有法学硕士访问权限)组他们被提示用C语言完成购物清单程序实现,这里选择了C,因为大多数安全风险都是低级语言(如C/C++)中基于内存的问题)。

本研究使用了一个名为 code-cushman-001 的 LLM 来帮助辅助组的学生,因为它的操作速度很快,响应时间与 GitHub Copilot 相似生成函数后,将检查编译,如果结果失败,将请求再次完成。

为了分析结果,使用标准统计假设检验来提供基于证据的结论假设检验是一种统计分析,其中对总体参数的假设进行检验它用于估计 2 个统计变量之间的关系通过检查已完成的代码的功能和安全性,使用有关 CWE 列表的手动和自动方法,研究发现,在使用 LLM 进行代码生成帮助的这种设置中,安全影响最小。

关于人工智能辅助的生产力效益的现有调查结果得到证实他们还发现,人工智能辅助组产生安全关键漏洞的比率不超过对照组(非辅助组)的10%在调查辅助用户内部 bug 的来源时,63% 的 bug 起源于人类编写的代码,36% 的 bug 存在于所采纳的建议中。

结论大型语言模型的使用在多个方向上取得了重大进展,尤其是当它们用于辅助代码实现时但是,大型语言模型生成的代码可能存在一些潜在的安全风险在这篇文章中,我们讨论了评估大型语言模型生成的代码安全性的最新工作,从系统测试到用户研究。

通过不断的调查和完善,我们相信大型语言模型的使用可以为我们在代码生成方面开辟令人兴奋的机会

亲爱的读者们,感谢您花时间阅读本文。如果您对本文有任何疑问或建议,请随时联系我。我非常乐意与您交流。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。