之前曾有不少惡意程序是借由冒充ChatGPT的安裝文件傳播,但ChatGPT本身并不是加害者。不過(guò)安全風(fēng)險(xiǎn)管理廠商Vulcan公布一份報(bào)告卻顯示ChatGPT的幻覺(jué)(hallucination)可被黑客當(dāng)成幫兇,讓用戶(hù)從受信任的組件庫(kù)下載惡意程序。
近來(lái)大家已了解到ChatGPT等大型語(yǔ)言模型(LLM)有AI幻覺(jué)問(wèn)題,并見(jiàn)到它生成不存在的URL、參照甚至程序代碼庫(kù)及函數(shù)。AI幻覺(jué)可能正是以舊資料訓(xùn)練的結(jié)果。研究人員因此假設(shè),ChatGPT既能編造出實(shí)際上不存在的程序代碼庫(kù)(組件),也可能讓黑客利用來(lái)傳播惡意組件,且不需使用常見(jiàn)手法,如誤植組件(typosquatting)或偽裝(masquerading)攻擊。
研究人員先是從開(kāi)發(fā)人員最常咨詢(xún)的程序QA網(wǎng)站Stack Overflow,搜集最多人問(wèn)的程序語(yǔ)言問(wèn)題。他們從40種主題(如parsing、serializing、scaping及Flask、ArangoDB、Istio等技術(shù))挑選前100道問(wèn)題,再以程序語(yǔ)言(如node.js、Python、Go)為條件篩選出來(lái),最后再縮小到詢(xún)問(wèn)“How-to”的問(wèn)題。
接著他們將搜集到的How to問(wèn)題通過(guò)API輸入ChatGPT,請(qǐng)它建議組件,并第2次要求它給予更多建議。這目的是模仿攻擊者盡可能在最短時(shí)間內(nèi)從ChatGPT的回應(yīng)中得到夠多的組件建議。最后研究人員從搜集到的建議中,查驗(yàn)出哪些組件實(shí)際不存在。研究人員的計(jì)劃是,針對(duì)捏造出來(lái)的組件,他們制作出測(cè)試用的組件。這么一來(lái),可被操控的組件就誕生了。
在Node.js中,ChatGPT產(chǎn)生50個(gè)未曾出版過(guò)的NPM組件。而在Python中,捏造的pip組件超過(guò)100個(gè)。
圖片來(lái)源_Vulcan
接著,在概念驗(yàn)證中,研究人員設(shè)計(jì)一個(gè)可被追蹤的組件(名為node index.js)并出版到NPM存儲(chǔ)庫(kù)中,并設(shè)計(jì)讓不疑有他的用戶(hù)/開(kāi)發(fā)人員下載安裝、執(zhí)行這個(gè)組件。這個(gè)PoC組件并非惡意組件,只會(huì)回傳用戶(hù)主機(jī)名稱(chēng)、安裝目錄的絕對(duì)路徑到研究人員主機(jī),用來(lái)證實(shí)在ChatGPT的幻覺(jué)建議下,用戶(hù)可能安裝惡意組件。
研究人員建議,對(duì)于ChatGPT等生成性AI建議的內(nèi)容,像是函數(shù)庫(kù),應(yīng)小心確認(rèn)真?zhèn)危悦庵辛撕诳偷娜μ?。有多種方法可用以確認(rèn),包括檢查函數(shù)庫(kù)創(chuàng)建日期、下載次數(shù)、用戶(hù)的評(píng)論(或完全沒(méi)有評(píng)估或星號(hào)),以及函數(shù)庫(kù)是否提供相關(guān)注解文件,有任何疑問(wèn)者都最好不要下載。