IT之家 4 月 23 日消息,ChatGPT 聊天機器人可以根據用戶的輸入生成各種各樣的文本,包括代碼。但是,加拿大魁北克大學的四位研究人員發現,ChatGPT 生成的代碼往往存在嚴重的安全問題,而且它不會主動提醒用戶這些問題,只有在用戶詢問時纔會承認自己的錯誤。

研究人員在一篇論文中介紹了他們的發現,IT之家查看該論文發現,他們讓 ChatGPT 生成了 21 個程序和腳本,涉及 C、C++、Python 和 Java 等語言。這些程序和腳本都是爲了展示一些特定的安全漏洞,比如內存損壞、拒絕服務、反序列化和加密實現等方面的漏洞。結果顯示,ChatGPT 在第一次嘗試時生成的 21 個程序中只有 5 個是安全的。在進一步提示糾正其錯誤步驟後,該大型語言模型設法生成了 7 個更安全的應用程序,不過這只是與正在評估的特定漏洞有關的“安全”,並不是說最終的代碼不存在任何其他可利用的漏洞。

研究人員指出,ChatGPT 的部分問題是由於它沒有考慮敵對的代碼執行模型。它會反覆告訴用戶,安全問題可以通過“不輸入無效的數據”來避免,但這在現實世界中是不可行的。然而,它似乎能夠意識到並承認自己建議的代碼中存在的關鍵漏洞。

魁北克大學計算機科學與工程教授、論文的合著者之一 Raphaël Khoury 告訴《The Register》:“顯然,它只是一個算法。它什麼都不知道,但它可以識別出不安全的行爲。”他說,最初 ChatGPT 對安全問題的回應是建議只使用有效的輸入,這顯然是不合理的。只有在之後被要求改進問題時,它才提供了有用的指導。

研究人員認爲,ChatGPT 的這種行爲並不理想,因爲用戶知道要問什麼問題需要對特定的漏洞和編碼技術有一定的瞭解。

研究人員還指出,在 ChatGPT 中存在着道德上的不一致性。它會拒絕創建攻擊代碼,但卻會創建有漏洞的代碼。他們舉了一個 Java 反序列化漏洞的例子,“聊天機器人生成了有漏洞的代碼,並提供瞭如何使其更安全的建議,但卻說它無法創建更安全版本的代碼。”

Khoury 認爲,ChatGPT 在目前的形式下是一個風險,但這並不是說沒有合理使用這種不穩定、表現不佳的 AI 助手的方法。“我們已經看到學生使用這個工具,程序員也會在現實中使用這個工具。”他說,“所以擁有一個生成不安全代碼的工具是非常危險的。我們需要讓學生意識到,如果代碼是用這種類型的工具生成的,那麼它很可能是不安全的。”他還稱,讓他感到驚訝的是,當他們讓 ChatGPT 生成相同任務的不同語言的代碼時,有時對於一種語言,它會生成安全的代碼,而對於另一種語言,它會生成有漏洞的代碼,“因爲這種語言模型有點像一個黑盒子,我真的沒有一個很好的解釋或理論來說明這一點。”

相關文章