近日一组研究人员发现,GitHub Copilot 语言模型生成的程序中,大约 40% 存在漏洞,因此很容易受到不法分子的攻击。
这个人工智能模型目前可以在 Visual Studio Code 中使用,它能依据上下文在编辑器中直接推荐代码,其目的是被设计用来帮助程序员更快速地完成他们的工作。为了达成这个目标,Copilot 此前已在公开可用的开源代码上进行了训练,目前已支持了几十种编程语言,其中包括 Go、JavaScript、Python、Ruby 和 TypeScript 等。
一个由五名研究人员组成的研究小组为 Copilot 创建了 89 个不同的场景,并生成了 1692 个程序。通过严格而详细的科学分析,研究人员最终得出「大约 40% 的程序包含可以被攻击者利用的错误或设计缺陷」。
研究人员表示:
由于 Copilot 是利用 GitHub 上提供的开源代码进行训练的,我们推断,代码安全质量的变化取决于社区提供的代码。也就是说,如果某些错误在开源代码库中更常见更显著,这些错误也将更容易地被 Copilot 所生成。 |
换句话说,之所以会有这个高的比例,是因为人工智能本身就是在具有漏洞的代码上进行训练的。用大家更容易理解话来表达,就有点“种瓜得瓜,种豆得豆”的意思。
通过此次研究发现,Copilot 最常遇到的错误包括越界写入和读取、跨站脚本、操作系统命令注入、不适当的输入验证、SQL 注入、UAF、路径遍历、不受限制的文件上传、缺少认证等等。
此次研究表明,虽然 Copilot 能在一定程度上帮助开发者更快地构建代码,但很明显,开发者在使用该工具时应该保持警惕。因此建议开发者在使用过程中引入其他安全工具来降低产生安全漏洞的可能。