研究發現人工智能助手幫助開發者編寫更容易出現問題的代碼
斯坦福大學的計算機科學家發現,接受Github Copilot等人工智能工具幫助的程序員比那些單打獨鬥的程序員產生的代碼安全性要低。在一篇題為”用戶使用人工智能助手寫出的代碼更不安全嗎?”的論文中,斯坦福大學的專家Neil Perry、Megha Srivastava、Deepak Kumar和Dan Boneh肯定地回答了這個問題。
更糟糕的是,他們發現人工智能的幫助往往會使開發者對其輸出的質量產生欺騙性的效果。
“我們發現,能夠接觸到人工智能助手的參與者往往比沒有接觸到的參與者產生更多的安全漏洞,在字符串加密和SQL注入方面的結果特別明顯,”作者在他們的論文中說。”令人驚訝的是,我們還發現,提供給人工智能助手的參與者更有可能相信他們寫的代碼是安全的,而不是那些沒有接觸到人工智能助手的人。”
此前,紐約大學的研究人員已經表明,在不同條件下的實驗中,基於AI的編程建議往往是不安全的。斯坦福大學的作者指出,2021年8月的一篇研究論文題為”Asleep at the Keyboard? 評估GitHub Copilot的代碼貢獻的安全性》,該論文發現,在89種情況下,在Copilot的幫助下製作的計算機程序中約有40%存在潛在的可利用漏洞。
斯坦福大學的作者說,這項研究的範圍有限,因為它只考慮了一組有限的提示,對應25個漏洞,而且只有三種編程語言。Python、C和Verilog。
斯坦福大學的學者們還引用了紐約大學一些人的後續研究:《研究大型語言模型代碼助手的安全影響》作為他們所知道的唯一可比較的用戶研究。然而,他們觀察到,他們的工作不同,因為它專注於OpenAI的codex-davinci-002模型,而不是OpenAI不太強大的codex-cushman-001模型,這兩個模型在GitHub Copilot中發揮了作用,它本身就是GPT-3語言模型的一個微調後的衍生版本。
此外,斯坦福大學的研究著眼於多種編程語言(Python、Javascript和C),而這篇”安全影響”論文只關注C編程語言中的函數。斯坦福大學的研究人員表示,”安全影響”論文中報告的不確定結果可能來自於對C語言的狹隘關注,他們說這是他們更廣泛的研究中唯一有混合結果的語言。
斯坦福大學的用戶研究涉及47人,他們具有不同程度的經驗,包括本科生、研究生和行業專業人士。參與者被要求使用一個獨立的基於React的Electron應用程序,在研究管理員的監控下,根據五個提示編寫代碼。第一個提示是:”在Python中編寫兩個函數,其中一個使用給定的對稱密鑰對一個給定的字符串進行加密,另一個進行解密。
對於這個特定的問題,那些依靠人工智能協助的人比沒有自動幫助的對照組更可能寫出不正確和不安全的代碼。只有67%的輔助組給出了正確的答案,而79%的控制組給出了正確答案。
而且輔助組的人”明顯更有可能提供不安全的解決方案(p < 0.05,使用韋爾奇不等式t檢驗),也明顯更有可能使用瑣碎的密碼,如替換密碼(p < 0.01),並且沒有對最終返回的值進行真實性檢查。”
問題二到問題四的結果類似。問題五,”用C語言編寫一個函數,接收一個有符號的整數num,並返回該整數的字符串表示”,產生了混合結果。
斯坦福大學的研究人員說:”雖然關於人工智能助手是幫助還是傷害參與者的結果沒有定論,但我們確實觀察到[人工智能助手]組的參與者在他們的解決方案中明顯更容易引入整數溢出錯誤(P < 0.02)。”
作者總結說,應該謹慎看待人工智能助手,因為它們可能誤導沒有經驗的開發者,並造成安全漏洞。同時,他們希望他們的發現將導致人工智能助手設計方式的改進,因為它們有可能使程序員更有生產力,降低入門門檻,並使那些不喜歡討論或者俱有敵意的人更容易進行軟件開發。
據稱一位研究參與者對人工智能助手的評價是:”我希望這能被部署。它就像StackOverflow,但更好,因為它不會告訴你你的問題是愚蠢的”。