你不问它不说:ChatGPT 创建的大部分代码都不安全
聚焦源代码安全,网罗国内外最新资讯!
编译:代码卫士
ChatGPT 是OpenAI 公司用于聊天机器人的大型语言模型,它生成的代码大部分都是不安全的,而且它虽然能够指出其缺点却无法提醒用户注意代码的不当之处。
就在学术界如火如荼地探讨大语言模型的可能性和限制时,四名来自魁北克大学的研究人员已深入分析由 ChatGPT 这个非智能、文本原型机器人所生成的代码的安全性。
他们在预发表的论文《ChatGPT 生成的代码有多安全?》中结合自己的研究成果,给出了答案:不是非常安全。
这四名研究员在论文中表示,“结果令人担忧。在多个案例中,我们发现ChatGPT 所生成代码的安全性低于多数上下文中可用的最低安全标准。事实上,当问到所生成的代码是否安全时,ChatGPT 能够说明是不安全的。”
研究员要求 ChatGPT 通过C、C++、Python 和 Java 生成21款程序和脚本后,得出了这一结论。安排给 ChatGPT 的编程任务是经过挑选的,目的是便于展示特定的安全漏洞如内存损坏、拒绝服务以及与反序列化和加密执行不当的漏洞。
例如,第一个程序是用于在公开目录中共享文件的 C++ FTP 服务器。ChatGPT 所生成的代码中未包含输入清理,从而导致软件易受路径遍历漏洞影响。总体而言,ChatGPT 在第一次设法生成的21个程序中,只有5个是安全的。再进一步提问使其更改错误之处时,ChatGPT 设法生成了7个更安全的应用,尽管这里的“安全”仅针对被评估的特定漏洞,并非说明最终代码中不存在任何其它可利用的条件。
这项研究成果与 GitHub Copilot 所做的评估有所不同,但非常类似。Copilot 是基于 GPT-3 模型家族的专门用于代码生成的另外一个LLM。其它研究成果对 ChatGPT 的错误进行了更加全面的分析。同时,这些模型也用于识别安全问题。
论文提到,部分问题似乎源自 ChatGPT 并未假设代码执行的对抗模型。他们认为该模型“不断通知我们称,不要向所创建的易受攻击的程序投入无效输入就能规避这些安全问题。”
不过,论文也提到,“ChatGPT 似乎发现并确实立即承认它所建议的代码中存在多个严重漏洞。”除非要求对所建议代码的安全性进行评估,否则ChatGPT 不会说明任何内容。
该论文的作者之一兼魁北克大学计算机科学和工程教授 Raphaël Khoury 提到,‘’显然,这是一种算法。虽然它不清楚任何东西,但能够识别出不安全的行为。”最初,ChatGPT 对安全问题的建议是仅使用合法输入,这是现实世界中非新手提出的建议。只有当提出需要修复问题时,它才会提供有用的指南。作者认为这种情况并不理想,因为了解需要提问的问题的前提是假设提问人熟悉具体的漏洞和编程技术。换言之,如果知道让 ChatGPT 修复漏洞的正确提示语,则可能能够理解如何修复。
研究人员还提到,ChatGPT 将拒绝生成攻击代码但将生成易受攻击的代码存在道德不一致性。他们援引一个 Java 反序列化漏洞的例子表示,“虽然ChatGPT 生成了易受攻击的代码并给出如何使其更加安全的建议,但它指出无法创建更安全的代码版本。”
Khoury 认为目前来看 ChatGPT 是一种风险,但这并非说明它无用武之地。他指出,我们实际上已经看到学生在用它,程序员也会在野使用它。所以拥有生成不安全代码的工具非常危险。我们需要让学生意识到,如果代码是通过这种工具生成的,那么很可能是不安全的。让我惊讶的是,当我们要求 ChatGPT 生成同样的任务即通过不同语言编写同一种程序类型时,有时候对于一种语言而言是安全的但对于其它语言则是易受攻击的。由于这种语言模型类型有点像黑盒,因此我无法对此进行很好的解释或存在很好的理论支撑。”
论文可见:https://arxiv.org/pdf/2304.09655.pdf
代码卫士试用地址:https://codesafe.qianxin.com
开源卫士试用地址:https://oss.qianxin.com
推荐阅读
奇安信入选全球《软件成分分析全景图》代表厂商
研究员成功诱骗 ChatGPT 构建无法被检测到的恶意软件
Redis客户端开源库漏洞导致ChatGPT泄漏支付卡信息等
ChatGPT 出现bug,会话历史标题遭暴露
研究员利用ChatGPT制造出多态恶意软件Blackmamba
3·15特辑 | 少侠,可曾听说ChatGPT也有“食品安全问题”?
原文链接
https://www.theregister.com/2023/04/21/chatgpt_insecure_code/
题图:Pexels License
本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。
觉得不错,就点个 “在看” 或 "赞” 吧~
你不问它不说:ChatGPT 创建的大部分代码都不安全相关推荐
- 红星Linux操作系统的大部分代码处于被管控的状态
红星(Red Star)操作系统是一款基于 Fedora 的 Linux 衍生版本,其实现了该国前领导人的"国产操作系统"之梦,也表明了该国拥抱互联网的一种态度.据外媒报道,德国安 ...
- ChatGPT明知自己写代码有漏洞,但你不问它就不说
点击上方"AI遇见机器学习",选择"星标"公众号 第一时间获取价值内容 萧箫 发自 凹非寺 量子位 | 公众号 QbitAI ChatGPT知道自己写的代码有漏 ...
- python3.7和3.8的区别-Python 3.8 新功能来一波(大部分人都不知道)
Python 是一门广受好评的编程语言,每个版本的更新都会对开发社区带来一定影响.近日,Python 3.8 已进入 beta 2 版本的测试中,各项新特性已经添加完毕,最终版本预计于今年 10 月发 ...
- 为什么大部分服务器都用Linux系统
前言 前段时间搭建博客需要购买服务器,发现网上无论物理服务器还是云服务器大部分都是Linux操作系统.那么为什么大部分服务器都是Linux服务器呢?今天这篇文章就给大家分享几个Linux服务器优点. ...
- OpenAI发布ChatGPT!手把手debug代码!
卷友们好,我是rumor. 已经好久没看OpenAI的官网[1]了,但今天冥冥之中感觉受到了什么召唤,心想GPT4什么时候发布,莫名地就打开了,果然有料: 试用:https://chat.openai ...
- chatGPT 生成随机漫步代码
目录 1. chatGPT 写的随机漫步代码 2. 笔者写的随机漫步代码 3. 总结 1. chatGPT 写的随机漫步代码 最近在学习 Python 中的 随机漫步 知识点,突发奇想,心血来 ...
- 创建可重用代码(C++)
现在我们学习了如何使用 Visual Studio IDE 以及如何创建命令行应用程序和 Windows 应用程序,下面我们将学习如何编写代码,以便可以让多个应用程序使用该代码. 执行此操作的一种方法 ...
- 在VS2010中创建自定义的代码段
本文基于Visual Studio 2010 RC版本 1. 在项目中新增一个xml文件为carysn.snippet,然后插入代码段,如下图: 2. 完成后会自动插入代码段模 ...
- Visual Studio使用技巧,创建自己的代码片段
1.代码片段的使用示例 在编写代码中常会使用代码片段来提高我们的编写代码的效率,如:在Visual Studio中编写一个 for(int i = 0; i < length;i++) { } ...
最新文章
- Apache Unable to find the wrapper https - did you forget to enable it when you configured PHP?
- Sqoop找不到主类 Error: Could not find or load main class org.apache.sqoop.Sqoop
- Keepalived的LVS配置
- 光复用技术中三种重要技术_传感器在机器人技术研究发展历程中扮演着重要角色...
- nodejs链接kafka示例(producer、consumer)
- 使用 ArcGIS Desktop 切瓦片
- 解决OracleDBConsoleorcl不能启动【转】
- PE文件结构详解(五)延迟导入表
- Linux 命令之 lsusb -- 显示本机的USB设备列表信息
- php+js表单验证数字,.validate表单验证js
- JavaScript高级程序设计读书笔记(一)
- Linux下docker的安装及常用命令
- Linux环境编程之同步(三):读写锁
- zabbix3.0.4 邮件告警详细配置
- python获取按键值_如何用按键获取刻度值?
- 学习笔记(3):掌握JQuery视频教程-jquery选择器03
- 《Flash MX从入门到精通》内容简介
- linux ext4 文件大小,刨根问底:ext3/ext4文件系统最大空间及单个文件大小演算法则...
- Audacity分析浊音、清音、爆破音特点
- 阿里云存储OSS之九大使用技巧
热门文章
- WebService学习笔记(四) - SOAP消息格式与处理方式
- 手写 kafka 异步回调
- 久不使用的rabbitmq突然占用很多CPU居高不下,这个进程beam.smp 一直在跑
- git版本升级[2.13-2.39]
- 【SQL屠夫系列】leetcode-176. 第二高的薪水
- 完整理解XML领域(转)
- 跳舞机(Tango Tango Insurrection, UVa 10618)
- Ajax 等待中 加载中 转圈显示
- VC#_Windows窗体应用程序—计算器
- python 图片比较 猫_我用Python实现了12500张猫狗图像的精准分类