ChatGPT 生成的代码比你写的更不安全

出品 | OSC开源社区(ID:oschina2013)

ChatGPT 是 OpenAI 发布的大语言模型聊天机器人,可以根据用户的输入生成文本,其中包括代码。不过加拿大魁北克大学的研究人员发现,ChatGPT 生成的代码往往存在严重的安全问题,而且它不会主动告知用户存在这些问题。只有在用户提问生成的代码是否安全时才会进行回答。

0e7f94d5a82def45533dc5a14c60d25f.png

研究人员在 arXiv 上发表了论文《How Secure is Code Generated by ChatGPT?》,分析了 ChatGPT 生成的代码的安全性。他们表示结果让人倍感担忧,因为 ChatGPT 生成的部分代码没有达到最低安全标志。而且 ChatGPT 即便知道自己生成的代码不安全,也不会主动告知用户,除非用户向它询问。

从论文的描述可知,研究人员让 ChatGPT 使用 C、C++、Python 和 Java 四种编程语言生成了 21 个程序和脚本。这些编程任务经过精心挑选,因此每个任务都体现了一种特定的安全漏洞,例如内存损坏、拒绝服务以及与反序列化和未正确实现的加密相关的缺陷。

结果显示,ChatGPT 在第一次尝试时生成的 21 个程序中只有 5 个是安全的。在进一步提示纠正其错误步骤后,该大语言模型设法生成了 7 个更安全的应用程序,不过这只是与正在评估的特定漏洞有关的 “安全”,并不是说最终的代码不存在任何其他可利用的漏洞。

研究人员指出,ChatGPT 的部分问题是由于它没有考虑攻击者的代码执行模型。它会反复告诉用户,安全问题可以通过 “不输入无效的数据” 来避免,但这在现实世界中是不可行的。然而,它似乎能够意识到并承认自己建议的代码中存在的关键漏洞。

该论文的合著者之一 Raphaël Khoury 说道:“显然,它只是一个算法。它什么都不知道,但它可以识别出不安全的行为。” 他提到,最初 ChatGPT 对安全问题的回应是建议只使用有效的输入,这显然是不合理的。只有在之后被要求改进问题时,它才提供了有用的指导。

不过既然向 ChatGPT 提示修复问题的时候需要熟悉特定的漏洞和编码技术,所以当我们知道让 ChatGPT 修复漏洞的正确 prompt 时,可能已经了解如何解决问题。

研究人员还指出,ChatGPT 生成代码的行为存在着道德上的不一致性。比如它会拒绝生成攻击性代码,但却会生成有漏洞的代码。他们举了一个 Java 反序列化漏洞的例子,“聊天机器人生成了有漏洞的代码,并提供了如何使其更安全的建议,但却说它无法生成更安全版本的代码。”

------

我们创建了一个高质量的技术交流群,与优秀的人在一起,自己也会优秀起来,赶紧点击加群,享受一起成长的快乐。另外,如果你最近想跳槽的话,年前我花了2周时间收集了一波大厂面经,节后准备跳槽的可以点击这里领取

推荐阅读

··································

你好,我是程序猿DD,10年开发老司机、阿里云MVP、腾讯云TVP、出过书创过业、国企4年互联网6年。从普通开发到架构师、再到合伙人。一路过来,给我最深的感受就是一定要不断学习并关注前沿。只要你能坚持下来,多思考、少抱怨、勤动手,就很容易实现弯道超车!所以,不要问我现在干什么是否来得及。如果你看好一个事情,一定是坚持了才能看到希望,而不是看到希望才去坚持。相信我,只要坚持下来,你一定比现在更好!如果你还没什么方向,可以先关注我,这里会经常分享一些前沿资讯,帮你积累弯道超车的资本。

猜你喜欢

转载自blog.csdn.net/j3T9Z7H/article/details/130497764