前段時間,GitHub和 OpenAI發佈了一個名爲Copilot的新AI工具的技術預覽版,這個工具位於Visual Studio Code編輯器中並自動完成代碼片斷。據消息稱,它最適合Python、JavaScript、TypeScript、Ruby和Go。但同時須要注意的是,任何生成的代碼都應進行缺陷和漏洞測試。html
幫助開發人員根據語義提示快速建立代碼塊的AI工具備望顯著縮短編程時間,但同時也警告你們要注意錯誤及問題,被引用的代碼可能存在缺陷,包含攻擊性語言並可能存在數據安全問題。git
這個被稱爲Copilot的AI工具通過GitHub開發服務項目的數十億行代碼訓練,能夠根據註釋、文檔字符串、函數名和開發者輸入的任何代碼來預測函數的意圖,Copilot將自動完成整個代碼塊。github
GitHub在其Copilot網站上表示:世界上有不少公共代碼的編碼模式、漏洞、引用過期的API或習語都不安全。當GitHub Copilot基於這些數據合成代碼建議時,它也能夠綜合包含這些不良模式的代碼。算法
GitHub做爲世界上最大的代碼託管平臺,一方面方便了開發人員及時發現優質資源,另外一方面也爲犯罪分子提供機會。所以不管是Copilot引用的代碼,仍是在平常工做中,建議用到開源或第三方代碼及組件時,要及時進行代碼安全檢測,避免在無心中引入漏洞或其餘安全風險。編程
Copilot基於OpenAI Codex,這是一種新的生成式學習系統,已針對英語以及來自GitHub等公共存儲的源代碼進行了培訓。輸入註釋、函數名稱和變量將會讓Copilot自動完成最有可能須要的函數體,但系統也會提供其餘可能的代碼塊。安全
在使用Python函數的測試中,Copilot在43%的狀況下猜對了內容,在57%的狀況下,前10個結果中存在正確的代碼塊。這項服務旨在證實及其代理能夠充當編程團隊的另外一半,並顯著加快開發速度。markdown
基於人工智能(AI)和機器學習(ML)的技術在必定程度上或許能爲開發人員減小系統漏洞,同時幫助安全分析人員在分類警報和更快地處理修復問題事件上帶來必定貢獻,然而,早期的機器學習(ML)系統每每容易出現錯誤並遭到對抗性攻擊。網絡
例如,2016年,微軟在Twitter上發佈了一款名爲「Tay」的聊天機器人。機器學習(ML)系統試圖與任何在線發送消息的人對話,並從這些對話中學習。然而,一場對Tay的協同攻擊致使聊天機器人在不到24小時裏被人類完全「教壞」,成爲一個飆髒話的種族主義者,微軟不得不將其下線。app
這個例子告訴你們,若是使用來自不信任的Internet的輸入來訓練機器學習(ML)算法可能會致使意外結果。GitHub也稱,Copilot仍處於早期階段,安全性將會是將來的重點。機器學習
GitHub在回答採訪時表示:目前還處於早期階段,如今正努力將GitHub本身的安全工具包括在內,並將不安全或低質量的代碼從訓練集中排除,同時還有一些其餘機制,將來還會和你們分享更多。
GitHub Copilot試圖理解使用者的意圖,並儘量生成最好的代碼,但它建議的代碼可能並不老是有效,甚至沒有意義。Copilot建議的代碼一樣須要像其餘代碼同樣進行仔細的靜態代碼安全檢測審查。
人工智能領域在這幾年飛速發展,2019年,專一於人工智能安全並在線發表的研究論文數量從3年前的56篇躍升至1500多篇。隨着相關領域的產品不斷推出,相似於Copilot這樣的系統極易成爲網絡攻擊者的目標。2020年11月,MITRE與微軟和其餘科技公司合做,建立了一個針對AI/ML系統的潛在對抗攻擊詞典,並給出大量真實攻擊的例子。
此外,不安全的代碼並非惟一讓人擔憂的地方,在GitHub站點上無心中發佈的我的數據可能會包含在代碼輸出當中,儘管在系統測試中發現極少的這種狀況。同時Copilot只是一種工具,並非良好編碼習慣的替代品。
在平常工做中養成良好的編碼習慣能夠減小在軟件開發中留下的隱患,避免資源浪費,下降軟件維護成本,讓整個軟件系統更具生命力。
參讀連接: