面向代碼語言模型的安全性研究全新進(jìn)展,南大&NTU聯(lián)合發(fā)布全面綜述
本篇綜述的作者團(tuán)隊(duì)包括南京大學(xué) iSE 團(tuán)隊(duì)的研究生陳宇琛、葛一飛、韓廷旭、張犬俊,指導(dǎo)教師房春榮副教授、陳振宇教授和徐寶文教授,以及來自南洋理工大學(xué)的研究員孫偉松、陳震鵬和劉楊教授。
近年來,代碼語言模型(Language Models for Code,簡稱 CodeLMs)逐漸成為推動(dòng)智能化軟件開發(fā)的關(guān)鍵技術(shù),應(yīng)用場景涵蓋智能代碼生成與補(bǔ)全、漏洞檢測與修復(fù)等。例如,基于知名代碼語言模型 Codex 構(gòu)建的 AI 編碼助手 GitHub Copilot 能夠?qū)崟r(shí)提供代碼建議和補(bǔ)全,顯著提升了開發(fā)者的工作效率,現(xiàn)已吸引超過 100 萬開發(fā)者使用。然而,隨著 CodeLMs 的廣泛應(yīng)用,各種安全問題也逐漸顯現(xiàn),與自然語言模型類似,CodeLMs 同樣會(huì)面臨后門攻擊和對抗攻擊等安全威脅,安全性正受到嚴(yán)峻挑戰(zhàn)。例如,受攻擊的 CodeLMs 可能會(huì)生成具有隱藏安全漏洞的代碼,一旦這些不安全代碼被集成到開發(fā)者的軟件系統(tǒng)(如股票交易系統(tǒng)和自動(dòng)駕駛系統(tǒng))中,可能導(dǎo)致嚴(yán)重的財(cái)產(chǎn)損失甚至危及生命的事故。鑒于 CodeLMs 對智能化軟件開發(fā)和智能軟件系統(tǒng)的深遠(yuǎn)影響,保障其安全性至關(guān)重要。CodeLMs 安全性正成為軟件工程、人工智能和網(wǎng)絡(luò)安全領(lǐng)域的研究新熱潮。
南京大學(xué) iSE 團(tuán)隊(duì)聯(lián)合南洋理工大學(xué)共同對 67 篇 CodeLMs 安全性研究相關(guān)文獻(xiàn)進(jìn)行了系統(tǒng)性梳理和解讀,分別從攻擊和防御兩個(gè)視角全面展現(xiàn)了 CodeLMs 安全性研究的最新進(jìn)展。從攻擊視角,該綜述總結(jié)了對抗攻擊和后門攻擊的主要方法與發(fā)展現(xiàn)狀;從防御視角,該綜述展示了當(dāng)前應(yīng)用于 CodeLMs 的對抗防御和后門防御策略。同時(shí),該綜述回顧了相關(guān)文獻(xiàn)中常用的實(shí)驗(yàn)設(shè)置,包括數(shù)據(jù)集、語言模型、評(píng)估指標(biāo)和實(shí)驗(yàn)工具的可獲取性。最后,該綜述展望了 CodeLMs 安全性研究中的未來機(jī)遇與發(fā)展方向。
- 論文地址:https://arxiv.org/abs/2410.15631
- 論文列表:https://github.com/wssun/TiSE-CodeLM-Security
一、CodeLMs 安全性研究發(fā)展趨勢與視角
該綜述對 2018 年至 2024 年 8 月期間的相關(guān)文獻(xiàn)數(shù)量和發(fā)表領(lǐng)域進(jìn)行了統(tǒng)計(jì)分析,如圖 1 所示。近年來,CodeLMs 安全性研究的關(guān)注度持續(xù)上升,凸顯了其日益增長的重要性和研究價(jià)值。此外,CodeLMs 的安全性問題已在軟件工程、人工智能、計(jì)算機(jī)與通信安全等多個(gè)研究領(lǐng)域引起了廣泛關(guān)注。
圖 1:CodeLMs 安全性文獻(xiàn)累積數(shù)量及分布情況
CodeLMs 安全性的研究本質(zhì)是攻擊者與防御者之間的博弈。因此,如圖 2 所示,該綜述將研究方向劃分為針對 CodeLMs 安全的攻擊研究和防御研究;在攻擊方面,涵蓋了后門攻擊(包括數(shù)據(jù)投毒攻擊和模型投毒攻擊)和對抗攻擊(包括白盒攻擊和黑盒攻擊);在防御方面,涵蓋了后門防御(包括模型訓(xùn)練前、訓(xùn)練中和訓(xùn)練后防御)和對抗防御(包括對抗訓(xùn)練、模型改進(jìn)和模型擴(kuò)展)。
圖 2:CodeLMs 安全性研究方向分類
二、針對 CodeLMs 的后門攻擊與對抗攻擊
后門攻擊
如圖 3 所示,后門攻擊可以通過數(shù)據(jù)投毒攻擊或模型投毒攻擊的方式,將隱藏的觸發(fā)器植入到 CodeLMs 中,使模型在接收到特定輸入時(shí)產(chǎn)生攻擊者預(yù)期的惡意輸出。
- 數(shù)據(jù)投毒攻擊(Data Poisoning Attacks):攻擊者向 CodeLMs 的訓(xùn)練數(shù)據(jù)集中注入包含觸發(fā)器的有毒數(shù)據(jù),并將這些數(shù)據(jù)發(fā)布到數(shù)據(jù) / 代碼開源平臺(tái),例如 GitHub。
- 模型投毒攻擊(Model Poisoning Attacks):攻擊者制作有毒的訓(xùn)練數(shù)據(jù),并使用這些數(shù)據(jù)訓(xùn)練 / 微調(diào)有毒的預(yù)訓(xùn)練 CodeLMs,并將該模型發(fā)布到模型開源平臺(tái),例如 Hugging Face。
開發(fā)者或者用戶通過開源平臺(tái)下載并使用有毒的數(shù)據(jù)集或使用有毒的預(yù)訓(xùn)練模型來訓(xùn)練或微調(diào)下游任務(wù)的 CodeLMs。該模型將包含攻擊者注入的后門。攻擊者可以使用包含觸發(fā)器的輸入對下游任務(wù)模型發(fā)起攻擊,導(dǎo)致其輸出攻擊者目標(biāo)結(jié)果。
圖 3:針對 CodeLMs 后門攻擊的工作流
對抗攻擊
如圖 4 所示,對抗攻擊可以通過白盒攻擊或者黑盒攻擊方式對輸入數(shù)據(jù)添加微小的擾動(dòng),使 CodeLMs 產(chǎn)生錯(cuò)誤的高置信度預(yù)測,從而欺騙模型。
- 白盒攻擊(White-box Attacks):攻擊者能夠獲得目標(biāo)模型的結(jié)構(gòu)和參數(shù)等信息,并可以根據(jù)這些已知信息生成對抗樣本。
- 黑盒攻擊(Black-box Attacks):攻擊者無法得知目標(biāo)模型的詳細(xì)信息,只能獲取模型的最終決策結(jié)果,攻擊者需要通過與系統(tǒng)互動(dòng)過程來生成對抗樣本。
相比于白盒攻擊,黑盒攻擊所能利用的信息更少,攻擊的難度更大。但是由于其更接近實(shí)際中攻擊者能夠掌握的信息程度,因此對于模型的威脅更大。
圖 4:針對 CodeLMs 對抗攻擊的工作流
三、針對 CodeLMs 的后門防御與對抗防御
為了應(yīng)對 CodeLMs 上的后門攻擊和對抗攻擊,研究人員開發(fā)了相應(yīng)的防御方法。后門防御策略通常包括在模型訓(xùn)練前防御、模型訓(xùn)練中防御和模型訓(xùn)練后防御,主要通過識(shí)別異常數(shù)據(jù)樣本或模型行為來提高安全性。對抗防御則采用對抗訓(xùn)練、模型改進(jìn)和模型擴(kuò)展等方法,通過將對抗樣本引入訓(xùn)練集來增強(qiáng)模型的安全性和魯棒性。這些防御方法的研究為提升 CodeLMs 的安全性提供了重要支持。然而,相較于后門和對抗攻擊在深度代碼模型安全中的廣泛研究,防御方法的研究顯得尤為缺乏。
表 1:針對 CodeLMs 后門防御方法的文獻(xiàn)列表
表 2:針對 CodeLMs 對抗防御方法的文獻(xiàn)列表
四、CodeLMs 安全性研究中常用的數(shù)據(jù)集、語言模型、評(píng)估指標(biāo)以及實(shí)驗(yàn)工具
該綜述還總結(jié)了 CodeLMs 安全性研究中常用的數(shù)據(jù)集、語言模型、評(píng)估指標(biāo)以及實(shí)驗(yàn)工具。
基準(zhǔn)數(shù)據(jù)集
包括 BigCloneBench、OJ Dataset、CodeSearchNet、Code2Seq、Devign、Google Code Jam 等,涵蓋了 8 種編程語言。
表 3: CodeLMs 安全性研究中常用的數(shù)據(jù)集
語言模型
包括 RNN、LSTM、Transformer、CodeBERT 和 GPT 等語言模型,涵蓋了非預(yù)訓(xùn)練模型、預(yù)訓(xùn)練模型以及大語言模型。
表 4: CodeLMs 安全性研究中常用的語言模型
評(píng)估指標(biāo)
在 CodeLMs 安全性的研究中,除了要關(guān)注攻擊或者防御方法的效果之外,還要關(guān)注這些方法對模型產(chǎn)生的影響。因此,評(píng)估指標(biāo)可分為兩類:一類用于評(píng)估攻擊或防御方法的有效性,另一類用于評(píng)估模型性能的變化。
- 攻擊或防御方法的有效性評(píng)估指標(biāo):包括攻擊成功率(ASR)、誤報(bào)率(FPR)、平均歸一化排名(ANR)、查詢次數(shù)(Number of Queries)和擾動(dòng)比例(Pert)等。
- 模型性能評(píng)估指標(biāo):包括準(zhǔn)確率(ACC)、F1 分?jǐn)?shù)(F1)、平均倒數(shù)排名(MRR)和雙語評(píng)估替代工具(BLEU)等。
實(shí)驗(yàn)工具
如表 5 所示,為了促進(jìn)實(shí)驗(yàn)工具的進(jìn)一步應(yīng)用和研究,該綜述還深入探討了各文獻(xiàn)中提供的開源代碼庫。
表 5: CodeLMs 安全性研究中提供的可復(fù)現(xiàn)開源代碼庫鏈接
五、未來機(jī)遇與發(fā)展方向
該綜述進(jìn)一步探討了 CodeLMs 安全性研究的未來機(jī)遇與發(fā)展方向。
針對 CodeLMs 攻擊的研究
- 更全面地評(píng)估后門觸發(fā)器的隱蔽性:攻擊者不斷探索更隱蔽的觸發(fā)器設(shè)計(jì),從早期的死代碼方法發(fā)展到變量 / 函數(shù)名,甚至是自適應(yīng)觸發(fā)器,以期將更加隱蔽的觸發(fā)器注入到代碼中。然而,全面評(píng)估觸發(fā)器的隱蔽性仍然是一個(gè)挑戰(zhàn)。目前的研究方法通常側(cè)重于特定方面,如語法或語義的可見性,或依賴于人類實(shí)驗(yàn)。然而,這些方法尚未覆蓋所有可能的檢測維度,評(píng)估指標(biāo)和技術(shù)仍有改進(jìn)空間。
- 探討大語言模型的后門注入方法:目前的后門注入方法主要基于兩種情景:1. 攻擊者無法控制模型的訓(xùn)練過程,但模型使用了投毒數(shù)據(jù)進(jìn)行訓(xùn)練;2. 攻擊者可以控制模型的訓(xùn)練過程。然而,像 GPT-4 這樣的大型代碼語言模型通常是閉源的,這意味著攻擊者無法控制訓(xùn)練過程或追蹤訓(xùn)練數(shù)據(jù)。對于開源的大型 CodeLMs,通過訓(xùn)練或微調(diào)注入后門的成本顯著增加。此外,隨著大型 CodeLMs 的復(fù)雜性和魯棒性增強(qiáng),攻擊者插入后門的難度也在增加。
- 全面地評(píng)估對抗樣本的語法正確性和語義保留:當(dāng)前的對抗擾動(dòng)技術(shù)通常通過修改 / 替換變量名或應(yīng)用不改變代碼語義的變換來實(shí)現(xiàn)保持代碼的語法正確性并保留語義。然而,現(xiàn)有的評(píng)估方法并未完全考慮這些對抗樣本在擾動(dòng)后是否保持語法正確性和語義一致性。即使某些對抗樣本在表面上似乎保留了代碼的語義,它們在執(zhí)行過程中可能會(huì)引入語法或邏輯錯(cuò)誤。
- 全面地評(píng)估對抗擾動(dòng)的隱蔽性:在針對 CodeLMs 的白盒攻擊和黑盒攻擊中,當(dāng)前技術(shù)通常使用基于相似度的指標(biāo)(例如 CodeBLEU)來評(píng)估對抗樣本的隱蔽性或自然性。然而,這些指標(biāo)并不總是理想的。一些擾動(dòng)可能對人類而言難以察覺,但在相似度指標(biāo)中顯示出顯著差異,反之亦然。此外,目前的指標(biāo)并未涵蓋所有影響對抗樣本隱蔽性的因素,尤其在評(píng)估擾動(dòng)的實(shí)際效果時(shí)。
- 探討針對 CodeLMs 攻擊的原理:解釋性的進(jìn)展或許有助于更好地理解后門和對抗攻擊的原理。微小的參數(shù)變化對預(yù)測結(jié)果影響顯著,且神經(jīng)網(wǎng)絡(luò)的運(yùn)行機(jī)制對人類難以直接理解。近年來,解釋性已成為深度學(xué)習(xí)的重要研究方向,但對 CodeLMs 的深入理解仍是亟待解決的問題。目前,一些研究正為對抗攻擊提供安全性和魯棒性證明,但更需深入探討預(yù)測結(jié)果的成因,使訓(xùn)練和預(yù)測過程不再是黑盒。解釋性不僅能增強(qiáng) CodeLMs 的安全性,還能揭示模型的內(nèi)部機(jī)制。然而,這也可能被攻擊者利用,以優(yōu)化觸發(fā)器選擇和搜索空間,從而構(gòu)建更有效的攻擊。因此,盡管面臨挑戰(zhàn),解釋性的提升有望以復(fù)雜的方式增強(qiáng) CodeLMs 的安全性。
針對 CodeLMs 防御的研究
- 平衡后門防御的有效性與其對模型性能影響:當(dāng)前防御技術(shù)旨在保護(hù) CodeLMs 不同階段免受攻擊。然而,要在保證模型正常性能的同時(shí),準(zhǔn)確高效地檢測和清除后門,仍面臨諸多挑戰(zhàn)。首先,訓(xùn)練前防御主要通過識(shí)別數(shù)據(jù)中的 “異常” 特征來檢測中毒樣本,但這種方法常導(dǎo)致高誤報(bào)率且耗費(fèi)大量計(jì)算資源,難以在精確度和效率之間取得平衡。對于復(fù)雜觸發(fā)器,現(xiàn)有防御技術(shù)在檢測和移除上更具挑戰(zhàn)性。其次,訓(xùn)練后的防御通過去學(xué)習(xí)或輸入過濾來清除后門,但隨著模型規(guī)模擴(kuò)大,這些技術(shù)需要大量時(shí)間和資源,且可能對模型正常性能產(chǎn)生一定負(fù)面影響。
- 平衡對抗防御技術(shù)的有效性與對其模型性能的影響:CodeLMs 的對抗防御方法主要通過對抗訓(xùn)練或數(shù)據(jù)增強(qiáng)技術(shù)來提升模型的魯棒性。然而,在增強(qiáng)魯棒性和安全性的同時(shí)維持模型性能仍是一大難題。目前的研究通過基于梯度的擾動(dòng)在最壞情況下對程序進(jìn)行變換,與隨機(jī)擾動(dòng)相比,該方法更有可能生成魯棒性更強(qiáng)的模型。然而,這些方法在提升魯棒性時(shí)往往會(huì)降低模型的正常性能。盡管有些研究嘗試通過將基于梯度的對抗訓(xùn)練與編程語言數(shù)據(jù)特征結(jié)合,或設(shè)計(jì)特定的損失函數(shù),以同時(shí)增強(qiáng)模型的魯棒性和性能,但這些方法往往需要更多的計(jì)算資源。
- 探討 CodeLMs 的多場景防御:除了單一防御場景,多場景防御技術(shù)具有更大的潛力。從 CodeLMs 的生命周期角度來看,通過在模型訓(xùn)練前、訓(xùn)練中和訓(xùn)練后實(shí)施既涵蓋數(shù)據(jù)保護(hù)又涵蓋模型保護(hù)的混合場景防御策略,可以進(jìn)一步增強(qiáng) CodeLMs 的安全性。
- 探討針對 CodeLMs 防御中的可解釋性:可解釋性的進(jìn)展有助于緩解防御方法滯后的問題。由于當(dāng)前研究尚未充分理解 CodeLMs(例如,帶有觸發(fā)器的輸入為何會(huì)被預(yù)測為目標(biāo)結(jié)果,以及不同數(shù)據(jù)如何影響模型權(quán)重),發(fā)現(xiàn)漏洞往往比預(yù)防攻擊更容易,導(dǎo)致 CodeLMs 的安全性存在一定滯后性。如果能夠深入理解代碼模型的內(nèi)部機(jī)制,防御措施將有望超越或至少與攻擊技術(shù)的發(fā)展保持同步。
總體而言,CodeLMs 的安全威脅可視為攻擊者與防御者之間持續(xù)演變的博弈,雙方都無法獲得絕對優(yōu)勢。然而,雙方可以借助新技術(shù)和應(yīng)用來獲取戰(zhàn)略優(yōu)勢。對于攻擊者而言,有效策略包括探索新的攻擊向量、發(fā)現(xiàn)新的攻擊場景、實(shí)現(xiàn)攻擊目標(biāo)的多樣化,并擴(kuò)大攻擊的范圍和影響。對于防御者而言,結(jié)合多種防御機(jī)制是一種有前景的攻擊緩解方式。然而,這種集成可能引入額外的計(jì)算或系統(tǒng)開銷,因此在設(shè)計(jì)階段需加以慎重權(quán)衡。