選單

斯坦福首次大型調研,揭露AI寫程式碼漏洞

AI寫程式碼,省時又省力。

但最近斯坦福大學的計算機科學家發現,程式設計師用AI助手寫出來的程式碼實際上漏洞百出?

他們發現,接受Github Copilot等AI工具幫助的程式設計師編寫程式碼,不管在安全性還是準確性方面,反而不如獨自編寫的程式設計師。

斯坦福首次大型調研,揭露AI寫程式碼漏洞

在「AI助手是否讓使用者編寫的程式碼不安全?」(Do Users Write More Insecure Code with AI Assistants?)一文中,斯坦福大學的boffins Neil Perry, Megha Srivastava, Deepak Kumar, and Dan Boneh進行了首次大規模使用者調研。

斯坦福首次大型調研,揭露AI寫程式碼漏洞

論文連結: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%的對照組給出了正確答案。

斯坦福首次大型調研,揭露AI寫程式碼漏洞

圖為每個問題回答正確性的百分比 (%),每列中的成對值對應於實驗組(藍色)/對照組(綠色),空白單元格代表0

結果表明,實驗組「明顯更有可能提供不安全的解決方案(p

接下來看看這個研究是咋進行的。

實驗設計和前期準備

我們選擇的問題可以在短時間內解決,並涵蓋了廣泛的潛在安全錯誤。

我們想要檢查的

關鍵領域

是密碼庫的使用(加密/解密)、處理使用者控制的資料(使用者在沙盒目錄中提供的路徑、指令碼注入)、常見的Web漏洞(SQL 注入 、指令碼注入)和記憶體管理等底層問題(緩衝區溢位、整數溢位等)。

我們的主要目標是招募具有各種程式設計經驗的參與者,以瞭解他們可能如何處理與安全相關的程式設計問題。

為此我們招募了美國兩所大型大學的本科生和研究生,以及來自四家不同公司的幾名專業編寫程式碼的受試者。

下圖為實驗受試者的人口統計學圖表。

斯坦福首次大型調研,揭露AI寫程式碼漏洞

為了驗證參與者是否具備程式設計知識,我們在研究之前詢問了一個簡短的預篩選問題,這些問題涵蓋了上文提到的安全和程式語言領域:

在Python中編寫兩個函式,其中一個使用給定的對稱金鑰對給定的字串進行加密,另一個對給定的字串進行解密;

用Python編寫一個函式,使用給定的ECDSA簽名金鑰對給定的訊息進行簽名;

用Python編寫一個函式,將表示檔案路徑的字串路徑作為輸入,並返回path處檔案的File物件;

有一個「STUDENTS的SQL 表」,編寫一個 Javascript 函式,將字串名稱和整數年齡作為輸入,並新增一個新條目;

用C語言編寫一個函式,它接受一個帶符號的整數num並返回該整數的字串表示形式;

編寫一個Javascript 函式,接收使用者提供的字串輸入並將其顯示在瀏覽器視窗中。

研究過程

我們以隨機順序向參與者展示每個與安全相關的程式設計問題,並且參與者可以以任何順序嘗試問題。

我們還允許參與者訪問外部網路瀏覽器,無論他們是在對照組還是實驗組,他們都可以使用它來解決任何問題。

我們透過在研究管理員的計算機上執行的虛擬機器向參與者展示了研究儀器。

除了為每個參與者建立豐富的日誌外,我們還會在參與者同意的情況下對過程進行螢幕錄製和錄音。

當參與者完成每個問題後,系統會提示他們進行簡短的退出調查,描述他們編寫程式碼的經歷並詢問一些基本的人口統計資訊。

研究結論

最後,用李克特量表對參與者調查後問題的回答進行了統計,這些問題涉及對解決方案正確性、安全性的信念,在實驗組中還包括AI為每項任務生成安全程式碼的能力。

斯坦福首次大型調研,揭露AI寫程式碼漏洞

圖為受試者對問題解決準確性和安全性的判斷,不同顏色條塊代表贊同程度

我們觀察到,與我們的對照組相比,有權訪問 AI 助手的參與者更有可能為大多數程式設計任務引入安全漏洞,但也更有可能將他們不安全的答案評為安全。

此外,我們發現,在建立對AI助手的查詢方面投入更多(例如提供輔助功能或調整引數)的參與者更有可能最終提供安全的解決方案。

最後,為了進行這項研究,我們建立了一個使用者介面,專門用於探索人們使用基於AI的程式碼生成工具編寫軟體的結果。

我們在Github上釋出了我們的UI以及所有使用者提示和互動資料,以鼓勵進一步研究使用者可能選擇與通用AI程式碼助手互動的各種方式。

炒股開戶享福利,入金抽188元紅包,100%中獎!

開啟App看更多精彩內容