IT之家 4 月 23 日消息,ChatGPT 聊天機器人可以根據(jù)用戶的輸入生成各種各樣的文本,包括代碼。但是,加拿大魁北克大學(xué)的四位研究人員發(fā)現(xiàn),ChatGPT 生成的代碼往往存在嚴(yán)重的安全問題,而且它不會主動提醒用戶這些問題,只有在用戶詢問時才會承認自己的錯誤。
研究人員在一篇論文中介紹了他們的發(fā)現(xiàn),IT之家查看該論文發(fā)現(xiàn),他們讓 ChatGPT 生成了 21 個程序和腳本,涉及 C、C++、Python 和 Java 等語言。這些程序和腳本都是為了展示一些特定的安全漏洞,比如內(nèi)存損壞、拒絕服務(wù)、反序列化和加密實現(xiàn)等方面的漏洞。結(jié)果顯示,ChatGPT 在第一次嘗試時生成的 21 個程序中只有 5 個是安全的。在進一步提示糾正其錯誤步驟后,該大型語言模型設(shè)法生成了 7 個更安全的應(yīng)用程序,不過這只是與正在評估的特定漏洞有關(guān)的“安全”,并不是說最終的代碼不存在任何其他可利用的漏洞。
研究人員指出,ChatGPT 的部分問題是由于它沒有考慮敵對的代碼執(zhí)行模型。它會反復(fù)告訴用戶,安全問題可以通過“不輸入無效的數(shù)據(jù)”來避免,但這在現(xiàn)實世界中是不可行的。然而,它似乎能夠意識到并承認自己建議的代碼中存在的關(guān)鍵漏洞。
魁北克大學(xué)計算機科學(xué)與工程教授、論文的合著者之一 Raphal Khoury 告訴《The Register》:“顯然,它只是一個算法。它什么都不知道,但它可以識別出不安全的行為。”他說,最初 ChatGPT 對安全問題的回應(yīng)是建議只使用有效的輸入,這顯然是不合理的。只有在之后被要求改進問題時,它才提供了有用的指導(dǎo)。
研究人員認為,ChatGPT 的這種行為并不理想,因為用戶知道要問什么問題需要對特定的漏洞和編碼技術(shù)有一定的了解。
研究人員還指出,在 ChatGPT 中存在著道德上的不一致性。它會拒絕創(chuàng)建攻擊代碼,但卻會創(chuàng)建有漏洞的代碼。他們舉了一個 Java 反序列化漏洞的例子,“聊天機器人生成了有漏洞的代碼,并提供了如何使其更安全的建議,但卻說它無法創(chuàng)建更安全版本的代碼。”
Khoury 認為,ChatGPT 在目前的形式下是一個風(fēng)險,但這并不是說沒有合理使用這種不穩(wěn)定、表現(xiàn)不佳的 AI 助手的方法。“我們已經(jīng)看到學(xué)生使用這個工具,程序員也會在現(xiàn)實中使用這個工具。”他說,“所以擁有一個生成不安全代碼的工具是非常危險的。我們需要讓學(xué)生意識到,如果代碼是用這種類型的工具生成的,那么它很可能是不安全的。”他還稱,讓他感到驚訝的是,當(dāng)他們讓 ChatGPT 生成相同任務(wù)的不同語言的代碼時,有時對于一種語言,它會生成安全的代碼,而對于另一種語言,它會生成有漏洞的代碼,“因為這種語言模型有點像一個黑盒子,我真的沒有一個很好的解釋或理論來說明這一點。”