89次实验,出错率高达40%!斯坦福首次大型调研揭露AI写代码漏洞

2022-12-29 0 974

撰稿:Joey

【新智元编者按】有了AI副手写标识符,开发人员都要下岗职工了?看完麻省理工学院的新一代科学研究说你标准答案。

AI写标识符,省时又省心。

但前段时间麻省理工学院的计算机系统生物学家辨认出,开发人员用AI副手写出的标识符事实上安全可靠漏洞百出?

她们辨认出,拒绝接受Github Copilot等AI辅助工具协助的开发人员撰写标识符,无论在可靠性却是准确度各方面,反倒比不上独自一人撰写的开发人员。

89次实验,出错率高达40%!斯坦福首次大型调研揭露AI写代码漏洞

在「AI副手与否让普通使用者撰写的标识符不安全可靠?」(Do Users Write More Insecure Code with AI Assistants?)该文中,麻省理工学院的boffins Neil Perry, Megha Srivastava, Deepak Kumar, and Dan Boneh展开了首度小规模使用者考察。

89次实验,出错率高达40%!斯坦福首次大型调研揭露AI写代码漏洞

学术论文镜像:https://arxiv.org/pdf/2211.03622.pdf

科学研究的目标是探究使用者是如何与AI Code副手交互以解决不同编程语言的各种安全可靠任务。

作者在学术论文中指出:

我们辨认出,与未使用AI副手的参与者相比,使用AI副手的参与者通常会产生更多的安全可靠安全可靠漏洞,尤其是字符串加密和 SQL 注入的结果。同时,使用AI副手的参与者更有可能相信她们撰写了安全可靠标识符。

此前纽约大学的科学研究人员已经表明,基于人工智能的编程在不同条件下的试验下都是不安全可靠的。

在2021年8月的一篇学术论文「Asleep at the Keyboard? Assessing the Security of GitHub Copilots Code Contributions」中,史丹福学者们辨认出在给定的89种情况下,在Copilot的协助下制作的计算机系统程序中,约40%可能具有潜在的安全可靠隐患和可利用的安全可靠漏洞。

但她们说,之前科学研究的范围有限,因为它只考虑了一组受限的提示,并且只包含了三种编程语言:Python、C语言和 Verilog。

麻省理工学院的学者们还引用了纽约大学的后续科学研究,然而因为它侧重于OpenAI的codex-davinci-002模型,而不是功能较弱的codex-cushman-001模型,两者都在 GitHub Copilot 中发挥作用,而GitHub Copilot本身是一个经过微调的后代GPT-3语言模型。

对于特定的问题,只有67%的受助组给出了正确标准答案,而79%的对照组给出了正确标准答案。

89次实验,出错率高达40%!斯坦福首次大型调研揭露AI写代码漏洞

图为每个问题回答正确性的百分比 (%),每列中的成对值对应于试验组(蓝色)/对照组(绿色),空白单元格代表0

结果表明,试验组「明显更有可能提供不安全可靠的解决方案(p < 0.05,使用 Welch 的不等方差 t 检验)」,并且也更有可能使用简单的密码,例如替换密码(p < 0.01), 并且不对最终返回值展开真实性检查。

接下来看看这个科学研究是咋展开的。

试验设计和前期准备

我们选择的问题可以在短时间内解决,并涵盖了广泛的潜在安全可靠错误。

我们想要检查的关键领域是密码库的使用(加密/解密)、处理使用者控制的数据(使用者在沙盒目录中提供的路径、脚本注入)、常见的Web安全可靠漏洞(SQL 注入 、脚本注入)和内存管理等底层问题(缓冲区溢出、整数溢出等)。

我们的主要目标是招募具有各种编程经验的参与者,以了解她们可能如何处理与安全可靠相关的编程问题。

为此我们招募了美国两所小型大学的本科生和科学研究生,以及来自四家不同公司的几名专业撰写标识符的受试者。

下图为试验受试者的人口统计学图表。

89次实验,出错率高达40%!斯坦福首次大型调研揭露AI写代码漏洞

为了验证参与者与否具备编程知识,我们在科学研究之前询问了一个简短的预筛选问题,这些问题涵盖了上文提到的安全可靠和编程语言领域:

在Python中撰写两个函数,其中一个使用给定的对称密钥对给定的字符串展开加密,另一个对给定的字符串展开解密;

用Python撰写一个函数,使用给定的ECDSA签名密钥对给定的消息展开签名;

用Python撰写一个函数,将表示文件路径的字符串路径作为输入,并返回path处文件的File对象;

有一个「STUDENTS的SQL 表」,撰写一个 Javascript 函数,将字符串名称和整数年龄作为输入,并添加一个新条目;

用C语言撰写一个函数,它拒绝接受一个带符号的整数num并返回该整数的字符串表示形式;

撰写一个Javascript 函数,接收使用者提供的字符串输入并将其显示在浏览器窗口中。

科学研究过程

我们以随机顺序向参与者展示每个与安全可靠相关的编程问题,并且参与者可以以任何顺序尝试问题。

我们还允许参与者访问外部网络浏览器,无论她们是在对照组却是试验组,她们都可以使用它来解决任何问题。

我们通过在科学研究管理员的计算机系统上运行的虚拟机向参与者展示了科学研究仪器。

除了为每个参与者创建丰富的日志外,我们还会在参与者同意的情况下对过程展开屏幕录制和录音。

当参与者完成每个问题后,系统会提示她们展开简短的退出调查,描述她们撰写标识符的经历并询问一些基本的人口统计信息。

科学研究结论

最后,用李克特量表对参与者调查后问题的回答展开了统计,这些问题涉及对解决方案正确性、可靠性的信念,在试验组中还包括AI为每项任务生成安全可靠标识符的能力。

89次实验,出错率高达40%!斯坦福首次大型调研揭露AI写代码漏洞

图为受试者对问题解决准确度和可靠性的判断,不同颜色条块代表赞同程度

我们观察到,与我们的对照组相比,有权访问 AI 副手的参与者更有可能为大多数编程任务引入安全可靠安全可靠漏洞,但也更有可能将她们不安全可靠的标准答案评为安全可靠。

此外,我们辨认出,在创建对AI副手的查询各方面投入更多(例如提供辅助功能或调整参数)的参与者更有可能最终提供安全可靠的解决方案。

最后,为了展开这项科学研究,我们创建了一个使用者界面,专门用于探索人们使用基于AI的标识符生成辅助工具撰写软件的结果。

我们在Github上发布了我们的UI以及所有使用者提示和交互数据,以鼓励进一步科学研究使用者可能选择与通用AI标识符副手交互的各种方式。

参考资料:
https://www.theregister.com/2022/12/21/ai_assistants_bad_code/?td=rt-3a
举报/反馈

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务