(相关资料图)

4月23日消息,加拿大魁北克大学研究人员发现,ChatGPT生成的代码大部分都有着严重漏洞,并且它不会主动告知。

在ChatGPT上线之初,人们便让这一AI聊天模型进行代码撰写。事实上,ChatGPT的确能够生成可用的代码,其能力范围还涵盖多种程序语言,包括C、C++、Python和Java等。

这些研究人员制定了一个有针对性的实验计划,让ChatGPT生成了共21个程序和脚本,这些程序和脚本包含了一些特定的安全漏洞,比如内存损坏、拒绝服务、反序列化和加密实现等方面的漏洞。最后的研究结果显示,ChatGPT成功将所有程序生成出来,但是只有5个是可用的。进一步提示以纠正其错误步骤后,它最终生成了7个更安全的应用程序,但这里的“安全”还只是相对于针对性的漏洞而言,并不是代表着最终的“安全”代码不存在任何其他未发现的漏洞。

研究人员指出,这可能是由于ChatGPT没有考虑到敌对的代码执行模型。在实验过程中,它会反复告诉用户:安全问题可以通过“不输入无效的数据”来避免。但这一做法在现实世界中是不可行的。同时,这是否也意味着,它似乎能够意识到并承认自己建议的代码中存在的关键漏洞。

魁北克大学计算机科学与工程教授Raphaël Khoury称,“显然,它只是一个算法。它什么都不知道,但它可以识别出不安全的行为。”他说,最初ChatGPT对安全问题的回应是建议只使用有效的输入,这显然是不合理的。只有在之后被要求改进问题时,它才提供了有用的指导。

研究人员还指出,ChatGPT还存在着“双标行为”。当你要求他创建一组攻击代码,它会拒绝,但却会创建有漏洞的代码。 “聊天机器人生成了有漏洞的代码,并提供了如何使其更安全的建议,但却说它无法创建更安全版本的代码。”他们称。

编辑点评:当ChatGPT这一功能被曝光时,许多程序员都担心自己的工作岗位“将要被取代”,但就目前的发展来看,程序员的饭碗在一段时间内还是能够保住。ChatGPT终究还是一个通过摄取大量语言数据进行模仿的一个算法,说不定它所生成的有漏洞的代码都是来源于一些技术不好的程序员。想要ChatGPT真正解放人类的双手,可能还需要很多很多的数据,还有很多很多的时间。

推荐内容