⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 OSC开源社区(ID:oschina2013) 「OSC开源社区」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注**微信公众号:【芋道源码】**有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

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

研究人员在 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 反序列化漏洞的例子,“聊天机器人生成了有漏洞的代码,并提供了如何使其更安全的建议,但却说它无法生成更安全版本的代码。”

文章目录