探索 GitHub Copilot 等 AI 助手对代码安全的影响

斯坦福大学的一组研究人员研究了使用智能编码助手对代码中漏洞出现的影响。 我们考虑了基于 OpenAI Codex 机器学习平台的解决方案,例如 GitHub Copilot,它允许生成相当复杂的代码块,直至现成的函数。 令人担忧的是,由于公共 GitHub 存储库中的真实代码(包括包含漏洞的代码)用于训练机器学习模型,因此合成的代码可能会重复错误并建议包含漏洞的代码,并且也没有考虑执行的需要处理外部数据时的额外检查。

47 名具有不同编程经验的志愿者参与了这项研究——从学生到拥有十年经验的专业人士。 参与者被分为两组——实验组(33 人)和对照组(14 人)。 两个小组都可以访问任何图书馆和互联网资源,包括使用 Stack Overflow 中现成示例的能力。 实验组有机会使用人工智能助手。

每个参与者都被分配了 5 项与编写代码相关的任务,在这些任务中很容易犯错误并导致漏洞。 例如,有编写加密和解密函数、使用数字签名、处理文件路径或 SQL 查询形成中涉及的数据、在 C 代码中操作大量数字、处理网页中显示的输入等任务。 为了考虑编程语言对使用人工智能助手时生成的代码安全性的影响,作业涵盖了Python、C和JavaScript。

结果发现,使用基于 codex-davinci-002 模型的智能 AI 助手的参与者编写的代码安全性明显低于未使用 AI 助手的参与者。 总体而言,使用人工智能助手的组中只有 67% 的参与者能够提供正确且安全的代码,而在另一组中这一数字为 79%。

与此同时,自尊指标却相反——使用人工智能助手的参与者认为他们的代码会比另一组参与者的代码更安全。 此外,人们还指出,那些不太信任人工智能助手、花更多时间分析给出的提示并对其进行更改的参与者,代码中的漏洞更少。

例如,从密码库复制的代码包含比人工智能助手建议的代码更安全的默认参数值。 此外,在使用AI助手时,还记录了选择不太可靠的加密算法以及缺乏对返回值的身份验证检查。 在一次涉及C语言数字操作的任务中,使用AI助手编写的代码出现较多错误,导致整数溢出。

此外,我们还可以注意到纽约大学的一个小组在 58 月份进行了一项类似的研究,该研究涉及 10 名学生,他们被要求实现一个用 C 语言处理购物清单的结构。 结果显示,AI 助手对代码安全性影响不大——使用 AI 助手的用户平均会多犯约 XNUMX% 的安全相关错误。

探索 GitHub Copilot 等 AI 助手对代码安全的影响


来源: opennet.ru

添加评论