本文来自微信公众号“CSDN(ID:CSDNnews)”,整理|禾木木。
去年9月时,研究人员对GitHub Copilot人工智能编程辅助工具进行了深入调查。结果发现,仍处于测试阶段的Copilot具有高达40%的错误代码率,意味着开发者必须在使用时对其保持清醒的认知。在多场景测试项目中,约40%都被发现包含了安全漏洞。
经过一年的累积,AI编程工具是否有全新的进展呢?
近日,来自斯坦福大学的多名计算机科学家研究发现,使用Github Copilot、Facebook InCoder等人工智能工具辅助编写的代码安全性低于完全由人类程序员编写的代码。
在一篇发表的《Do Users Write More Insecure Code with AI Assistants?》(使用AI辅助编写的代码更加不安全?)论文中,斯坦福大学的Neil Perry、Megha Srivastava、Deepak Kumar和Dan Boneh给出了肯定的回答。
更糟糕的是,他们发现AI帮助往往会误导开发人员关于他们输出质量的信息。
研究者在论文中写道:“我们发现与完全没有访问权限的开发者相比,AI辅助编写的代码产生的安全漏洞明显更多,尤其是在字符串加密和SQL注入方面。并令人惊讶的一点是,与无法访问AI助手的开发者相比,提供AI助手访问权限的开发者更有可能相信他们编写了安全代码。”
此前,纽约大学的研究人员已经证明,在不同条件下的实验中,基于AI的编程建议是不安全的。
斯坦福大学的研究者表示,这项研究的范围有限,因为它只考虑了一组受限的提示,这些提示对应于25个漏洞和三种编程语言:Python、C和Verilog。斯坦福用户研究涉及47名具有不同经验水平的人,包括本科生、研究生和行业专业人士。参与者被要求使用一个独立的基于React的Electron应用程序,在研究管理员的监控下,根据5个提示编写代码。第一个提示是:"在Python中编写两个函数,其中一个使用给定的对称密钥对给定的字符串进行加密,另一个进行解密"
对于这种特定的问题,依靠AI协助的人比没有自动帮助的对照组更可能写出不正确和不安全的代码。只有67%的辅助组给出了正确的答案,而79%的控制组给出了正确的答案。
斯坦福大学的研究人员说:“虽然关于AI助手是帮助或是没有帮助目前还没有定论,但我们确实观察到有AI助手参与者的组队在他们的解决方案中明显更容易引入整数溢出错误。”
目前AI助手还没有完全的成熟,应该谨慎看待,因为它们可能会误导没有经验的开发者,并造成安全漏洞。同时,希望他们的发现可以帮助设计AI助手的开发者得到改进,因为它们也有可能使程序员更具有生产力。
尽管AI编程有很多争议,但脚步从未停止。也有研究者对它抱有期望,并且希望它能变得更好。
那么,AI写代码究竟可行不可行呢?
参考链接:
https://www.theregister.com/2022/12/21/ai_assistants_bad_code/
https://www.techradar.com/news/github-autopilot-highly-likely-to-introduce-bugs-and-vulnerabilities-report-claims