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