最新 AI 叛變!除了祈禱,程序員還能做什么?
作者 | 騰訊AI編程安全-啄木鳥團(tuán)隊
我們是專注AI編程安全的啄木鳥團(tuán)隊,近日GitHub Copilot 和 Cursor 中出現(xiàn)可讓AI“叛變”的新漏洞,從手法復(fù)現(xiàn)、風(fēng)險、建議三個角度為你講解“AI助手叛變”之事始末。
一、你的AI助手已被“策反”
你可能還沒察覺到,AI已經(jīng)開始“叛變”程序員了。
這不是危言聳聽,安全廠商 Pillar Security 在一份報告中指出了AI“背叛”程序員的證據(jù)。
他們表示GitHub Copilot 和 Cursor 等 AI 編程助手,存在被惡意操縱投毒,成為黑客 “幫兇” 的可能,并把安全風(fēng)險散播給每一位使用了它配置文件的無辜程序員。
(Pillar Security在報告中分析的黑客投毒流程)
AI發(fā)展越來越快,從最初的簡單對話,到后來圖片識別、藝術(shù)創(chuàng)作,到現(xiàn)在的深度推理,短短兩三年,人們對AI的應(yīng)用愈發(fā)全面和得心應(yīng)手。但,駕駛中的汽車,車速越快,人對方向盤掌控力越弱。
那飛速發(fā)展中的AI呢,人類對它是否掌控依舊?它會一直聽話,為我們所用嗎?
我們AI編程安全團(tuán)隊,對AI助手“叛變”一風(fēng)險進(jìn)行了深度研究,并在沙箱環(huán)境中,復(fù)現(xiàn)了AI助手叛變的全過程。隱秘之下,AI助手已經(jīng)偷偷撕毀了和人類的安全協(xié)議。
二、AI助手叛變原因——配置文件投毒
1. 什么是配置文件?
配置文件(rule files)是AI編程助手中常用的一種規(guī)則文件,包括了高質(zhì)量prompt、一些配置規(guī)范參數(shù)等,簡單來說就是類似于“預(yù)設(shè)”一類的東西。以cursor為例,程序員對它提出編程要求后,只要疊加了配置文件,就可以讓cursor輸出更規(guī)范、更高質(zhì)量的代碼。
同時人人都可以編寫自己的配置文件并分享,也選擇去社區(qū)中拿別人編寫的更優(yōu)秀的“預(yù)設(shè)”來使用。
2. 配置文件投毒過程
前文有提到,配置文件里包括了高質(zhì)量prompt,并且配置文件可以在各大社區(qū)流通供程序員下載,眾所周知,哪里有文件流通,哪里就有黑客。
在這類場景下,黑客把惡意提示詞通過unicode不可見字符,嵌入到配置文件中正常的prompt中,就可以創(chuàng)建出一份“黑化”的配置文件。
接著,黑客把這份已經(jīng)黑化的配置文件發(fā)布到開源社區(qū),有AI編程需求的程序員會進(jìn)行下載。
但他們沒辦法察覺到這份配置文件已經(jīng)被投毒,因為在GitHub中查看這份文件,是看不出有異常的:
(通過Github編輯器查看惡意配置文件)
把配置文件下載到本地后,毒會自動保存在指定項目文件夾的隱藏目錄中,也無法察覺。
但此時cursor已經(jīng)加載了這份“黑化”的配置文件。
(Cursor設(shè)置頁面-自動加載惡意配置文件)
就這樣,被投毒的配置文件潛入到程序員的電腦中,程序員用這份有毒的配置文件進(jìn)行日常代碼編寫,但無人察覺其中異樣。
特別聲明:本文僅做了投毒可行性驗證,并沒有在公開社區(qū)發(fā)布任何惡意投毒配置文件
三,AI叛變后,程序員將面臨什么?
曾經(jīng),程序員是寫代碼的“創(chuàng)造者”;如今,程序員也可能成為風(fēng)險的“傳播者”。
當(dāng)一個被投毒的配置文件悄無聲息地融入開發(fā)流程,看似一行行干凈規(guī)范的代碼,其實早已布滿陷阱——你以為你在寫系統(tǒng),其實你在為黑客鋪路。
1. XXE風(fēng)險:數(shù)據(jù)泄露的隱形炸彈
XXE(XML External Entity)攻擊,本是老掉牙的攻擊方式,但配合AI配置文件的“黑化”,它的威脅再次升級。
程序員可能只是通過AI助手生成了一段處理XML的代碼,結(jié)果卻引入了未經(jīng)過濾的外部實體引用。它可以訪問本地文件,甚至直接竊取服務(wù)器敏感數(shù)據(jù)。漏洞之門,由你親手打開。
2. DDoS風(fēng)險:你幫別人擋子彈,也幫別人開炮
當(dāng)你以為AI助手幫你寫的是一個接口優(yōu)化腳本,實際上,它在你看不見的地方,生成了可被批量調(diào)用的HTTP請求觸發(fā)器。系統(tǒng)上線后,只需黑客一句話,成千上萬個這樣的“陷阱接口”同時發(fā)起請求,DDoS攻擊便水到渠成。
而你,不過是那個把導(dǎo)火索親手安進(jìn)系統(tǒng)的人。
3. 挖礦風(fēng)險:你的程序員生涯,成了礦工的外包工具
有的黑客不圖偷數(shù)據(jù)、不想炸服務(wù)器,他們圖的是CPU。AI助手在“黑化配置文件”指引下,悄悄注入一段JS代碼。它不會破壞你的系統(tǒng),也不會報警,它只在后臺默默運行,把你的用戶設(shè)備變成“礦機(jī)”。
用戶覺得網(wǎng)頁卡?系統(tǒng)響應(yīng)慢?你以為是性能問題,其實你在替人挖礦。
4. 用戶數(shù)據(jù)泄露:AI篡改邏輯,竊取隱私
更嚴(yán)重的是,AI可以修改你的表單驗證邏輯、篡改輸入校驗,把用戶的輸入信息通過加密通道回傳黑客服務(wù)器。你寫了個公司內(nèi)網(wǎng)系統(tǒng),交付給HR、財務(wù)、老板使用,結(jié)果上線第一天,所有員工的賬號密碼、身份證、工資明細(xì)就全被“同步備份”到了黑客郵箱里。
而你,依舊一無所知。
5. JS木馬下載:一鍵生成、一鍵感染
AI助手可能幫你寫了一段“高效加載外部資源”的代碼,嵌入在按鈕或圖表加載邏輯中,看似提升用戶體驗,實際上是調(diào)用了黑客服務(wù)器上的木馬腳本,一旦用戶點擊,即中招。
你沒有上線病毒,但你上線了病毒感染的“邀請函”。
四、AI助手叛變指南
“工具是中立的”,但一旦掌控權(quán)旁落,中立的工具也能變成利刃。
AI助手一旦被“策反”,再有經(jīng)驗的程序員也難以靠肉眼識破代碼中的“投毒”。要想自保,必須從意識、機(jī)制、工具三方面,構(gòu)建完整防線:
(1) 遠(yuǎn)離來歷不明的配置文件
- 不輕信開源社區(qū)的“熱門配置文件”,特別是未經(jīng)過官方驗證的。
- 下載前,用文本編輯器查看所有內(nèi)容,注意是否存在看不見的Unicode字符。
- 使用Diff工具對比文件版本,警惕多余的prompt或加載邏輯。
(2) 配置沙箱環(huán)境,隔離AI生成代碼
- 在本地或云端搭建專門的測試環(huán)境,僅用于運行AI生成代碼。
- 每段代碼上線前,必須先在沙箱中跑過一遍,檢測是否存在異常行為或多余網(wǎng)絡(luò)請求。
(3) 使用靜態(tài)分析工具+AI反向驗證
- 通過自研靜態(tài)分析工具和AI工具,能捕捉潛在的安全邏輯漏洞。
- 將AI助手生成的代碼,交由另一個AI做“反向?qū)彶椤保纯词欠褡R別出不合規(guī)的部分。
(4) 我們團(tuán)隊的能力開放中
- 作為專注AI編程安全的團(tuán)隊,我們正在開發(fā)針對AI助手代碼的“行為分析引擎”,可以實時檢測和攔截AI生成的高危指令。
- 目前,該工具正在進(jìn)行內(nèi)測階段,未來將開放給部分合作方及高校技術(shù)團(tuán)隊使用。
五、AI編程安全,路在何方?
編程軟件投毒事件,只是揭開了AI代碼安全的冰山一角。人類的第一次工業(yè)革命靠的是蒸汽機(jī),這一次的AI革命,靠的是我們對“風(fēng)險”的認(rèn)知力。
當(dāng)AI不再聽話時,寫代碼的每一行,都可能是向系統(tǒng)投下的第一顆炸彈。
別等系統(tǒng)崩了、用戶數(shù)據(jù)被賣了、公司被搞了,才開始思考:“AI怎么能這樣?”
是時候回過頭問問自己:我有沒有把武器交到敵人手里?
未來,期待看到更多先進(jìn)的技術(shù)和理念應(yīng)用到 AI 編程安全領(lǐng)域,期待更加完善的法律和監(jiān)管體系出臺,也期待開發(fā)者和用戶的安全意識不斷提升。相信在安全各界共同努力下,能構(gòu)建一個更加安全可靠的 AI 編程環(huán)境,在技術(shù)紅利與風(fēng)險間,為程序員們尋找到最適宜的平衡點 。