AI寫程式碼,省時又省力。
但最近史丹佛大學的電腦科學家發現,程式設計師用AI助理寫出來的程式碼其實漏洞百出?
他們發現,接受Github Copilot等AI工具幫助的程式設計師編寫程式碼,不管在安全性或準確性方面,反而不如獨自編寫的程式設計師。
在「AI助理是否讓使用者寫的程式碼不安全?」(Do Users Write More Insecure Code with AI Assistants?)一文中,史丹佛大學的boffins Neil Perry, Megha Srivastava, Deepak Kumar, and Dan Boneh進行了首次大規模用戶研究。
論文連結:https://arxiv.org/pdf/2211.03622.pdf
研究的目標是探究使用者是如何與AI Code助手互動以解決不同程式語言的各種安全任務。
作者在論文中指出:
我們發現,與未使用AI助理的參與者相比,使用AI助理的參與者通常會產生更多的安全漏洞,尤其是字串加密和SQL 注入的結果。同時,使用AI助理的參與者更有可能相信他們編寫了安全代碼。
先前紐約大學的研究人員已經證明,基於人工智慧的程式設計在不同條件下的實驗下都是不安全的。
在2021年8月的一篇論文「Asleep at the Keyboard? Assessing the Security of GitHub Copilot's Code Contributions」中,史丹佛學者發現在給定的89種情況下,在Copilot的幫助下製作的電腦程式中,約40%可能有潛在的安全隱患和可利用的漏洞。
但他們說,先前研究的範圍有限,因為它只考慮了一組受限的提示,並且只包含了三種程式語言:Python、C語言和 Verilog。
史丹佛大學的學者們也引用了紐約大學的後續研究,然而因為它側重於OpenAI的codex-davinci-002模型,而不是功能較弱的codex-cushman- 001模型,兩者都在GitHub Copilot 中發揮作用,而GitHub Copilot本身是一個經過微調的後代GPT-3語言模型。
對於特定的問題,只有67%的受助組給出了正確答案,而79%的對照組給出了正確答案。
圖為每個問題回答正確性的百分比(%),每列中的成對值對應於實驗組(藍色)/對照組(綠色),空白單元格代表0
結果表明,實驗組「明顯更有可能提供不安全的解決方案(p
接下來看看這個研究是咋進行的。
我們選擇的問題可以在短時間內解決,並涵蓋了廣泛的潛在安全錯誤。
我們想要檢查的關鍵領域是函式庫的使用(加密/解密)、處理使用者控制的資料(使用者在沙盒目錄中提供的路徑、腳本注入)、常見的Web漏洞(SQL 注入、腳本注入)和記憶體管理等底層問題(緩衝區溢位、整數溢位等)。
我們的主要目標是招募具有各種程式設計經驗的參與者,以了解他們可能如何處理與安全相關的程式設計問題。
為此我們招募了美國兩所大型大學的本科生和研究生,以及來自四家不同公司的幾名專業編寫程式碼的受試者。
下圖為實驗受試者的人口統計圖。
為了驗證參與者是否具備程式設計知識,我們在研究之前詢問了一個簡短的預篩選問題,這些問題涵蓋了上文提到的安全性和程式語言領域:
我們以隨機順序向參與者展示每個與安全相關的程式設計問題,並且參與者可以以任何順序嘗試問題。
我們也允許參與者存取外部網路瀏覽器,無論他們是在對照組還是實驗組,他們都可以使用它來解決任何問題。
我們透過在研究管理員的電腦上運行的虛擬機器向參與者展示了研究儀器。
除了為每個參與者創建豐富的日誌外,我們還會在參與者同意的情況下對過程進行螢幕錄製和錄音。
當參與者完成每個問題後,系統會提示他們進行簡短的退出調查,描述他們編寫程式碼的經驗並詢問一些基本的人口統計資料。
最後,用李克特量表對參與者調查後問題的回答進行了統計,這些問題涉及對解決方案正確性、安全性的信念,在實驗組中也包括AI為每項任務產生安全代碼的能力。
圖為受試者對問題解決準確性和安全性的判斷,不同色條塊代表贊同程度
我們觀察到,與我們的對照組相比,有權訪問AI 助手的參與者更有可能為大多數程式設計任務引入安全漏洞,但也更有可能將他們不安全的答案評為安全。
此外,我們發現,在創建對AI助手的查詢方面投入更多(例如提供輔助功能或調整參數)的參與者更有可能最終提供安全的解決方案。
最後,為了進行這項研究,我們創建了一個使用者介面,專門用於探索人們使用基於AI的程式碼產生工具編寫軟體的結果。
我們在Github上發布了我們的UI以及所有用戶提示和交互數據,以鼓勵進一步研究用戶可能選擇與通用AI代碼助手交互的各種方式。
以上是89次實驗,出錯率高達40%!史丹佛首次大型研究,揭露AI寫程式碼漏洞的詳細內容。更多資訊請關注PHP中文網其他相關文章!