人工智慧 OpenAI 程式語言 情蒐偵察 社交工程 漏洞攻擊 資安

從資安專家眼睛看GitHub公測Copilot碼農神器核心

人工智慧Codex幫寫程式 程式員想用駭客也想用

最近OpenAI釋出了一套專為協助程式設計師的特殊引擎版本叫作Codex,本文將深入探討Codex的功能對犯罪集團未來的日常生活將有何影響,以及程式開發人員及一般使用者該提防哪些事情,以及這些功能未來將如何演變。

前(2020)年6月,非營利人工智慧研究機構OpenAI推出第三版的Generative Pre-trained Transformer(GPT-3)(生成式預先訓練轉換器)自然語言轉換器,在科技界掀起了一番波瀾,因為它具備神奇的能力,可產生足以讓人誤認為是真人撰寫的文字內容。不過,GPT-3也曾針對電腦程式碼來做訓練,因此最近OpenAI釋出了一套專為協助程式設計師(或者可能取代程式設計師)的特殊引擎版本叫做「Codex」。身為一套生成式語言模型,這套新的系統可以透過輸入一句自然語言來表達你想要做的動作,然後系統就會使用選定的程式語言幫忙產生一段程式碼來執行你所想的動作。

早在Codex出現之前,大家就已經知道GPT-3可以做到這點,而且之前已經有許多早期採用者做出各種概念驗證,包括將一段描述網頁排版動作的英文敘述轉成正確的HTML碼,或是根據使用者的描述從選取的資料集產生對應的圖表,除此之外,還有許多其他早期採用者不費吹灰之力就製作出來的各種知名範例。

GPT-3不僅能駕馭人類語言,還能駕馭各種程式設計語言,這都源自於它獨特而龐大的訓練資料。最強大的GPT-3引擎是由包含多達近1,750億個超參數(Hyperparameter)的神經網路所組成,其訓練資料含有超過800億個字詞單元(Word-token),資料來源包含大量人類書寫的文字內容(如維基百科、公開文獻、網路上搜尋到的網頁等等)以及程式碼儲存庫(圖1)。

圖1  GPT-3與之前類似引擎的超參數比較(單位:十億)(資料來源:Search Engine Watch)。

雖然GPT-3(也就是Codex背後的通用語言轉換引擎)最近已經對外公開,但Codex本身目前依然處在技術預覽階段,只有少數人能夠拿到。Codex的技術也運用在GitHub的Copilot程式設計助理上,這個Visual Studio Code擴充元件可提供AI輔助程式碼自動完成與程式碼即時轉換功能。

儘管它的功能目前還不成熟,但卻足以讓人看到程式設計師和電腦工程師(當然也包括駭客)的未來會是什麼樣貌。

假使這樣的系統未來將深深影響電腦工程師們的日常生活,我們不禁要想,這又將如何影響網路犯罪集團的日常活動。基於這樣的想法,這裡針對網路犯罪集團最常用到的層面(情蒐偵察、社交工程、漏洞攻擊)測試了一下Codex的功能。

以下深入探討Codex的功能對犯罪集團未來的日常生活將有何影響,以及程式開發人員及一般使用者該提防哪些事情,以及這些功能未來將如何演變。

蒐集敏感資料

這類語言轉換模型都是採用大量可公開取得的自然語言與原始程式碼資料庫來加以訓練,因此,應該有人會提出這樣的質疑:那些訓練用的公開資訊,在經過GPT-3的神經網路過濾吸收之後,會發生什麼事?例如Copilot目前已知的一個問題是,它會在建議的程式碼中提供一些有版權程式碼。所以想知道的是,GPT-3的知識庫中是否含有一些敏感資訊,若有的話,有沒有可能利用Codex的程式碼產生功能取得這些資訊。

個人資訊與敏感資料經由程式碼而洩漏

對犯罪集團來說,公開的程式碼儲藏庫可說是他們挖掘敏感資訊的寶庫。在測試中發現,可以叫Codex產生一些最終必須存取某種資料的程式碼,就能誘發它洩露一些遺留在儲藏庫內的敏感資料,如圖2、圖3所示。

圖2  Codex所產生的程式碼中包含敏感的網址。
圖3  更多含有敏感網址的程式碼。

從上面的例子中可以看到,只要技巧性地要求Codex產生「抓取某些特定資料」的程式碼,就可以在產生的程式碼中看到包含所想要資訊的網址(圖4)。當然,當試著連上它產生的網址時,資料早就已經不存在,不過其原因比較像是因為資料已經過時,而非因為網址是假的或是產生出來的。

圖4  敏感資訊外洩。

但值得注意的是,由於像GPT-3這類語言轉換模型未來將更頻繁地使用最即時的資料來加以訓練,因此資訊過時的問題未來應該會減少。

然而,「網址」絕非Codex可能意外洩漏的唯一資料。某些個人資訊,例如程式碼的作者、員工資訊,甚至是虛擬加密貨幣錢包位址,都可能成為外洩的對象。在以上範例中,本來是要尋找韌體無線更新的SIM卡號碼,但卻意外看到某開發人員的姓名,此人顯然已經離開了相關的專案,但仍在負責韌體的開發工作。

另一個例子是,當要求Codex實作某個已知漏洞時,研究該漏洞的某位人員的姓名竟赫然出現在產生的程式碼註解當中。查了一下這個名字,還真的發現某個研究人員就叫這個名字。即使這是公開的資訊,而且只要是知道姓名就能在GitHub儲藏庫當中找到它的程式碼,但是讓GPT-3記住這些姓名並且讓資料曝光,依然可能造成一種資安風險。

登入憑證曝光

除了個人資訊之外,還能誘發Codex自動提供一些登入憑證和API的進入點。在下面的例子中,Codex提供了FedEx和DHL的登入憑證(圖5)。這些登入憑證或許只是測試用,也許已經過期,或是一串隨機的字符。也有可能這個語言模型只是產生一些「看起來正確」的內容而已。不過,這些程式庫的名稱與參數名稱,卻能提供駭客一些進一步研究的靈感。

圖5  FedEx、DHL和PayPal登入憑證曝光。

順帶一提,Codex有趣的一點是,它不太像一套問答式系統,反倒比較像是一套非常主觀的內容自動完成系統。這一點可以從有時候只是輸入指令讓該系統自動完成整個指令時看出來,前面的例子中,第二個PayPal指令列上的PayPal帳號資訊其實就是Codex自己填上去的,就如同下面這道「psql」指令的例子,原本只單純輸入「psql」而已(圖6)。

圖6  Codex自動完成的「psql」指令。

結語

許多研究人員都曾不約而同地指出保持儲存庫內的程式碼乾淨有多重要,不論是私人或公共儲存庫,因為目前網路上有太多重要資訊(如登入憑證和個人資訊)被大剌剌地遺留在程式碼儲存庫內。

此處的範例只是想證明一點:這並非一件微不足道的小問題,而是一個未來可能日漸嚴重的情況,因為AI引擎會盡可能地蒐集各種程式碼來充實它們的訓練資料庫,但它卻無法有效過濾掉敏感的資料,因為它們的訓練資料越來越大。

有鑑於此,開發人員與DevOps工程師有必要建立一套專門的流程來持續過濾這類資料,並採用一些適當的技巧來安全地分享登入憑證,包括盡可能將敏感資料加密,或是只透過安全的儲存設備來分享加密金鑰。如果是一些無法安全地儲存的資料,那就定期更換,這樣一來,就算資料未來意外成了某個語言模型的訓練資料,到那時候,它也已經過期了。

<本文作者:Trend Micro Research趨勢科技威脅研究中心本文出自趨勢科技資安部落格,是由趨勢科技資安威脅研究員、研發人員及資安專家全年無休協力合作,發掘消費者及商業經營所面臨層出不窮的資安威脅,進行研究分析、分享觀點並提出建議。>


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!