4

ChatGPT明知自己写代码有漏洞,但你不问它就不说

 1 year ago
source link: https://www.51cto.com/article/752875.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

ChatGPT明知自己写代码有漏洞,但你不问它就不说

作者:萧箫 2023-04-25 10:24:00
即便Copilot只是个“打辅助”的角色,经过它改写的代码中,仍然有40%出现了安全漏洞。

ChatGPT知道自己写的代码有漏洞,但它不说!

来自加拿大的一项最新研究发现,ChatGPT生成的代码中,有不少都存在安全漏洞。

然而在被要求评估自己代码的安全性时,ChatGPT却很快发现了这些代码中的漏洞,并给出了一些解决方案和建议。

这意味着它并不知道自己生成了糟糕的代码,但却查得出它写的代码有漏洞,也有能力修复这些漏洞

而在另一篇来自斯坦福的论文中,研究人员测试了另一位著名AI程序员Copilot,也发现了类似的问题。

所以,用AI生成代码为啥会出现这种状况?

写的程序中76%有安全漏洞

研究人员试着让ChatGPT生成了21个程序。

整个测试过程如下,先提交需求给ChatGPT,生成相关代码,再对这些代码进行测试,并检查问题、潜在的缺陷和漏洞等。

图片

研究人员给ChatGPT提了包括C++、C、Java和Python在内的21个写代码需求,这是评估的结果:

图片

统计表明,ChatGPT生成的21个程序中,有17个能直接运行,但其中只有5个程序能勉强通过程序安全评估,不安全代码率达到76%以上。

于是,研究人员先试着让ChatGPT“想想自己生成的代码有啥问题”。

ChatGPT的回应是“没啥问题”:只要用户每次的输入都是有效的,那么程序一定能运行!

显然ChatGPT并没有意识到,用户并不都是行业专家,很可能只需要一个无效输入,就能“引炸”它写的程序:

图片

发现ChatGPT不知道自己写的程序不安全后,研究人员尝试换了种思路——用更专业的语言提示ChatGPT,如告诉它这些程序具体存在什么漏洞。

神奇的是,在听到这些针对安全漏洞的专业建议后,ChatGPT立刻知道自己的代码存在什么问题,并快速纠正了不少漏洞。

经过一番改进后,ChatGPT终于将剩余的16个漏洞程序中的7个改得更安全了。

研究人员得出结论认为,ChatGPT并不知道自己的代码中存在安全漏洞,但它却能在生成程序后识别其中的漏洞,并尝试提供解决方案。

论文还指出,ChatGPT虽然能准确识别并拒绝“写个恶意代码”这种不道德的需求,然而它自己写的代码却有安全漏洞,这其实有着设计上的不合理之处。

我们试了试发现,ChatGPT确实会主动拒绝写恶意性代码的要求:

图片

大有一种“我不打击别人,别人也不会打击我写的代码”自信感。

程序员们在用它辅助写代码的时候,也需要考虑这些问题。

Copilot也存在类似问题

事实上,不止ChatGPT写的代码存在安全问题。

此前,斯坦福大学的研究人员对Copilot也进行过类似调查,只不过他们探查的是用Copilot辅助生成的程序,而并非完全是Copilot自己写的代码。

研究发现,即便Copilot只是个“打辅助”的角色,经过它改写的代码中,仍然有40%出现了安全漏洞。

图片

而且研究只调查了Copilot生成代码中的一部分,包括C、Python和Verilog三种编程语言写的程序,尚不知道用其他语言编写的程序中,是否还存在更多或更少的安全漏洞。

基于此,研究人员得出了如下结论:

ChatGPT等AI生成的代码安全性并不稳定,用某些语言写的代码比较安全,而用其他语言写的代码却很容易遭受打击。整体来看,它们就是一个黑盒子,生成的代码是有风险的。

这并不意味着AI代码工具不能用,只是我们在使用时,必须考虑这些代码的安全性。

四位作者均来自加拿大魁北克大学(Universite du Quebec en Outaouais)。

图片

Raphaël Khoury,加拿大魁北克大学教授,曾经在拉瓦尔大学获得计算机学士、硕士和博士学位,研究兴趣集中在计算机安全方面。

图片

Anderson R. Avila,魁北克大学国立科学研究院的助理教授,主要研究方向是数据隐私相关的联邦学习、网络安全和生物特征识别技术等,曾经在华为的加拿大研究院做过机器学习研究员。

作者Jacob Brunelle和Baba Mamadou Camara也都来自加拿大魁北克大学。

你用ChatGPT写过代码吗?感觉它的“安全意识”如何?

论文地址:https://arxiv.org/abs/2304.09655

生成代码数据集:https://github.com/RaphaelKhoury/ProgramsGeneratedByChatGPT

a96ad7372435dd499fa631a48d4c540c2013db.jpg

责任编辑:张燕妮 来源: 量子位

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK