研究人員:由 GitHub Copilot 生成的程序中,40% 存在漏洞
近日一組研究人員發(fā)現(xiàn),GitHub Copilot 語言模型生成的程序中,大約 40% 存在漏洞,因此很容易受到不法分子的攻擊。
這個人工智能模型目前可以在 Visual Studio Code 中使用,它能依據(jù)上下文在編輯器中直接推薦代碼,其目的是被設計用來幫助程序員更快速地完成他們的工作。為了達成這個目標,Copilot 此前已在公開可用的開源代碼上進行了訓練,目前已支持了幾十種編程語言,其中包括 Go、JavaScript、Python、Ruby 和 TypeScript 等。
一個由五名研究人員組成的研究小組為 Copilot 創(chuàng)建了 89 個不同的場景,并生成了 1692 個程序。通過嚴格而詳細的科學分析,研究人員最終得出「大約 40% 的程序包含可以被攻擊者利用的錯誤或設計缺陷」。
研究人員表示:
由于 Copilot 是利用 GitHub 上提供的開源代碼進行訓練的,我們推斷,代碼安全質量的變化取決于社區(qū)提供的代碼。也就是說,如果某些錯誤在開源代碼庫中更常見更顯著,這些錯誤也將更容易地被 Copilot 所生成。 |
換句話說,之所以會有這個高的比例,是因為人工智能本身就是在具有漏洞的代碼上進行訓練的。用大家更容易理解話來表達,就有點“種瓜得瓜,種豆得豆”的意思。
通過此次研究發(fā)現(xiàn),Copilot 最常遇到的錯誤包括越界寫入和讀取、跨站腳本、操作系統(tǒng)命令注入、不適當?shù)妮斎腧炞C、SQL 注入、UAF、路徑遍歷、不受限制的文件上傳、缺少認證等等。
此次研究表明,雖然 Copilot 能在一定程度上幫助開發(fā)者更快地構建代碼,但很明顯,開發(fā)者在使用該工具時應該保持警惕。因此建議開發(fā)者在使用過程中引入其他安全工具來降低產(chǎn)生安全漏洞的可能。