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