聚焦源代码安全,网罗国内外最新资讯!
编译:代码卫士
就在学术界如火如荼地探讨大语言模型的可能性和限制时,四名来自魁北克大学的研究人员已深入分析由 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://www.theregister.com/2023/04/21/chatgpt_insecure_code/
题图:Pexels License
本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。
觉得不错,就点个 “在看” 或 "赞” 吧~
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...