【論文閱讀】Security of Language Models for Code: A Systematic Literature Review

Security of Language Models for Code: A Systematic Literature Review

該論文于2025年被CCF A類期刊TOSEM收錄,作者來自南京大學和南洋理工大學。

概述

代碼語言模型(CodeLMs)已成為代碼相關任務的強大工具,其性能優于傳統方法和標準的機器學習方法 。然而,這些模型容易受到安全漏洞的影響,這引起了軟件工程、人工智能和網絡安全等領域越來越多的研究關注 。盡管對CodeLMs安全性的研究日益增多,但該領域仍缺乏全面的綜述 。為了彌補這一空白,論文中系統地回顧了68篇相關論文,并根據攻擊和防御策略對它們進行了整理。此外,論文還概述了常用的語言模型、數據集和評估指標,并強調了可用的開源工具和未來保障CodeLMs安全性的有前景的研究方向。

貢獻

  • 首個全面的綜述: 論文系統性地回顧了68篇相關研究,是首個針對CodeLMs安全的文獻綜述。該綜述對CodeLMs的攻擊和防御策略進行了全面的分類和分析。
  • 資源整理: 論文概述了CodeLMs安全研究中常用的語言模型、數據集和評估指標。此外,作者還整理并總結了可用的開源工具和數據集,并在他們的代碼庫中提供了這些資源TiSE-CodeLM-Security。
  • 挑戰與展望: 論文基于對現有研究的深入分析,指出了CodeLMs安全研究領域面臨的關鍵挑戰和未來的發展方向。

背景

代碼語言模型

代碼語言模型(CodeLMs)是利用神經網絡和深度學習技術,用于理解、生成或處理代碼的語言模型 。可以形式化為一個函數f:X→Yf:\mathcal{X} \rightarrow \mathcal{Y}f:XYX\mathcal{X}X是包含代碼片段的輸入空間,Y\mathcal{Y}Y是輸出空間。一個CodeLM常常由有序的n個層構成,連接方式為:fθ(x)=fn?1°fn?2?°f0(x)f_\theta(x) = f_{n-1} \circ f_{n-2} \cdots \circ f_0(x)fθ?(x)=fn?1?°fn?2??°f0?(x),模型的訓練過程可以表示為最小化經驗風險:

arg?min?θE(x,y)~{X,Y}[L(fθ(x),y)]\arg\min_{\theta} \mathbb{E}_{(x,y)\sim\{X,Y\}} \left[ \mathcal{L}(f_\theta(x), y) \right]argθmin?E(x,y){X,Y}?[L(fθ?(x),y)]

代碼相關的任務主要分為兩類:代碼理解任務,如算法分類、代碼克隆檢測、代碼搜索等;代碼生成任務,如代碼生成、代碼歸納、代碼優化。對于代碼理解任務來說,損失函數可以使用交叉熵函數:

L(θ)=∑i=0N?yilog?(fθ(xi))\mathcal{L}(\theta) = \sum_{i=0}^{N} -y_i \log(f_\theta(x_i))L(θ)=i=0N??yi?log(fθ?(xi?))

對于代碼生成任務來說,目標是為了最小化負條件對數似然,損失函數可以使用如下函數:

L(θ)=?1N∑i=1Nlog?P(fθ(xi)∣xi)\mathcal{L}(\theta) = -\frac{1}{N} \sum_{i=1}^{N} \log P(f_\theta(x_i) \mid x_i)L(θ)=?N1?i=1N?logP(fθ?(xi?)xi?)

語言模型安全

深度學習模型的安全威脅可以被歸為四類He et al.

  • 模型提取攻擊:通過API復現一個深度學習模型。
  • 模型翻轉攻擊:利用模型的預測和置信度分數來恢復訓練數據中的數據成員關系和屬性。
  • 投毒攻擊:通過污染訓練數據來降低深度學習模型的預測準確性,從而損害模型的可用性。
  • 對抗攻擊:在代碼語言模型(CodeLMs)的推理階段發生的,旨在利用模型的弱點,使其做出錯誤的預測。

研究問題

在這里插入圖片描述

RQ1:針對于代碼語言模型的攻擊

針對于代碼語言模型的攻擊可以分為兩類:后門攻擊和對抗攻擊。后門攻擊可細分為數據投毒攻擊和模型投毒攻擊,對抗攻擊可以細分為白盒攻擊和黑盒攻擊。

  1. 后門攻擊

    在這里插入圖片描述

    • 數據投毒攻擊

      數據投毒旨在向輸入樣本中注入特定觸發器,從而使經過這些數據訓練的模型將任何包含該觸發器的輸入錯誤地分類為目標標簽(分類任務)。

      Section4.2.2介紹了現有的數據投毒攻擊的相關工作。

    • 模型投毒攻擊

      模型投毒攻擊在設計觸發器和構建有毒數據集上和數據投毒類似,旨在使用有毒數據集訓練一個模型。

      Section4.2.3介紹了現有的模型投毒攻擊的相關工作。

    兩個攻擊都是為了向模型中植入后門,主要區別在于攻擊者對于模型的控制程度。數據投毒攻擊中,攻擊者只能掌握目標模型的訓練集(即,可以向開源平臺投放有毒數據集),但是模型投毒攻擊中,攻擊者能夠直接操作訓練過程(即,可以向開源平臺投放有毒數據集甚至是后門模型)。

    總結:

    • 攻擊有效性:數據投毒和模型投毒這兩種攻擊方式都對各種CodeLMs(包括預訓練和非預訓練模型)以及多種代碼相關任務(如代碼理解和代碼生成任務)展現出了有效性 。

    • 數據投毒是主流:在針對CodeLMs的后門攻擊研究中,數據投毒是目前被研究最廣泛的方法 。其中,使用固定的或語法無效的死代碼片段作為觸發器是最常見的方式 。

    • 隱蔽性挑戰:死代碼觸發器通常由一行或多行代碼組成,隱蔽性較低,容易被開發者或靜態分析工具檢測到 。為了提高隱蔽性,一些研究利用代碼頻率、上下文或對抗性擾動來設計觸發器,并通過替換標識符來執行攻擊 。不過,這些更隱蔽的方法通常成功率較低,且常是針對特定任務的 。

    • 模型投毒的崛起:自 2023 年以來,模型投毒攻擊開始受到關注 。它被認為比數據投毒構成更大的威脅,因為攻擊者可以直接操控訓練過程并發布帶有后門的預訓練模型 。然而,目前該類攻擊也面臨著與數據投毒類似的隱蔽性不足問題,因為它們通常也使用固定的或語法無效的觸發器 。

    • 自然存在的后門:研究還發現,后門漏洞不僅會由攻擊者有意植入,也可能存在于自然訓練模型中 。

  2. 對抗攻擊

    在這里插入圖片描述

    對抗攻擊的本質是制造合適的擾動來利用深度學習模型的缺陷。擾動是指在對抗樣本生成階段,有意向原始輸入樣本中添加的細微噪音,目的是在測試階段欺騙模型。根據攻擊者對于目標代碼語言模型的了解,對抗攻擊可以分為兩種類型:

    • 白盒攻擊:攻擊者掌握了有關目標模型的全部內容,包括架構、參數以及訓練數據,同時也包括相關的防御機制。

      4.3.2部分介紹了白盒攻擊的相關工作

    • 黑盒攻擊:攻擊者預先不知道有關目標模型的知識,只能通過與模型的交互來發動攻擊。

      4.3.3部分介紹了黑盒攻擊的相關工作

    總結

    • 攻擊的有效性

      白盒和黑盒對抗攻擊都已證明對各類CodeLMs,包括預訓練和非預訓練模型,以及各種代碼相關任務(如代碼理解和代碼生成)都是有效的 。

    • 白盒攻擊
      白盒攻擊主要依賴于目標模型的梯度信息來生成對抗樣本 。這些擾動不會改變程序的語義功能,且生成的樣本仍然可以成功編譯 。常見的擾動操作包括在標識符和語句層面進行替換、插入和刪除,例如重命名變量或插入死代碼 。然而,主要的挑戰在于如何生成既細微又有效的對抗樣本 。

    • 黑盒攻擊
      黑盒攻擊是目前研究中越來越受關注的領域 。與白盒攻擊不同,它不依賴于模型的梯度信息 ,而是通過觀察模型的輸入與輸出之間的關系來生成對抗樣本。這類攻擊通常使用演化算法、遺傳算法或其他基于查詢的方法來尋找最優擾動。由于缺乏模型的內部信息,黑盒攻擊通常比白盒攻擊更耗時,成功率也更低。

  • 后門攻擊:攻擊者在模型中植入特定的觸發器模式(即后門)。這種攻擊能使模型在正常輸入下表現良好,但當觸發器被激活時,會產生惡意輸出 。后門可以通過數據投毒或模型投毒的方式植入,其觸發器的設計和注入方法決定了攻擊的隱蔽性和有效性 。
  • 對抗攻擊:這種攻擊涉及向輸入中添加細微的擾動,從而導致模型做出不正確的預測 。這些擾動通常不會改變代碼的語義功能,但可以誤導模型的預測結果 。對抗攻擊分為白盒攻擊和黑盒攻擊,這兩種攻擊都旨在破壞模型的穩健性 。

總結來說,現有研究表明,CodeLMs 很容易受到后門攻擊和對抗攻擊的威脅,這應該引起軟件工程界的關注 。

RQ2:針對于代碼語言模型的防御

后門防御可以分為三類:預訓練防御、訓練時防御和訓練后防御。對抗防御也可以分為三類:對抗訓練、模型修改和附加模型。當前對于后門防御和對抗防御的研究都在起步階段。

  1. 后門防御

    后門防御尋求消除或者降低后門攻擊的成功率,從而增強模型的安全性。根據防御實施的不同階段,可以分為三類:

    • 預訓練防御:旨在訓練前檢測和移除有毒樣本。

      5.2.2部分介紹預訓練防御的相關工作

    • 訓練時防御:旨在防止訓練時的后門注入。

      5.2.3部分介紹訓練時防御的相關工作

    • 訓練后防御:在模型訓練完成后應用。通常利用模型“去學習”或輸入過濾等技術,以確保模型安全。

      5.2.4部分介紹訓練后防御的相關工作

    總結:現有的后門防御方法覆蓋了預訓練、訓練時和訓練后三個階段,通過各種技術有效地增強了代碼模型的安全性。然而,后門防御仍然處于起步階段并且研究有限。

  2. 對抗防御

    目前主要有三類對抗防御方法,旨在增強模型的魯棒性或消除對抗樣本的影響,包括修改輸入、修改模型以及附加模型。目前針對于代碼模型的對抗防御主要集中在修改輸入上。

    • 修改輸入:旨在通過改邊模型訓練過程或者輸入數據樣本來增強模型的魯棒性。這種方法通常將對抗性樣本引入訓練中,以提高模型對抗攻擊的能力。

      5.3.2部分介紹了對抗訓練的相關工作

    • 修改模型:通過在模型內部添加子網絡、修改激活函數或改邊損失函數等方式來實現防御。

      5.3.3部分介紹了模型修改的相關工作

    • 附加模型:使用外部模型作為額外的網絡來處理未見過的對抗性樣本。

      5.3.4部分介紹了附加模型的相關工作

    總結:

    • 修改輸入:這種方法通常采用對抗訓練,通過在訓練過程中引入對抗性樣本來增強模型的穩健性。
    • 修改模型:這種策略通過調整子網絡、激活函數或損失函數來有效檢測和處理對抗性樣本。
    • 附加模型:該方法利用外部模型作為附加網絡,以增強分類的穩健性。

    盡管當前的防御技術涵蓋了CodeLMs的不同方法和關鍵階段,但與針對CodeLMs安全性的攻擊研究相比,防御研究仍處于早期階段。

RQ3:針對于代碼語言模型安全性的實證研究

實證研究表明,目前針對代碼語言模型(CodeLMs)安全性的研究主要集中在兩大方面:

  • 評估攻擊的性能:對后門攻擊和對抗攻擊在不同任務和各種CodeLMs上的表現進行全面評估,包括攻擊的成功率及其對模型性能的影響。
  • 分析防御的效果:研究不同防御組件對防御有效性和模型整體性能的影響。

無論是攻擊還是防御方法,經驗研究都側重于評估其有效性、對模型性能的影響以及在有效性和模型性能之間做出的權衡。

RQ4:實驗設置和評估

  1. 常用數據集

    • 后門攻擊與防御研究:常用的數據集包括 CodeSearchNetCodeXGLUECode2Seq
    • 對抗攻擊與防御研究:常用的數據集包括 CodeSearchNetCodeXGLUEBigCloneBenchDevignAPPSCodeQAGCJ
  2. 常用代碼模型

    • CNN、RNN、LSTM、GRU、BiLSTM、BiRNN、RandomForest等傳統深度學習模型。
    • GNN、GCN、GGNN等基于圖的模型
    • Transformer、CodeBERT、GraphCodeBERT、CodeT5、CodeT5+、PLBART、CodeGen、GPT-2、GPT-3.5、GPT-4等預訓練模型。
    • DL-CAIS、ASTNN、Code2Vec、Code2Seq等其他模型。
  3. 常用指標

    • 攻擊和防御指標

      • 后門誤報率(FPRFPRFPR

      • 平均歸一化排名(ANRANRANR

      • 檢索數量

      • 擾動率(PertPertPert

      • 相對下降程度(RdR_dRd?

      • 有效率(VrV_rVr?)

      • 成功率(SrS_rSr?)

      • 變量改變率(VCRVCRVCR)

    • 模型表現指標

      • 干凈準確率(CACACA)
      • F1?socreF1-socreF1?socre
      • 平均倒數排名(MRRMRRMRR)
      • 雙語互譯質量評估(BLEUBLEUBLEU
      • CodeBLEUCodeBLEUCodeBLEU
      • 攻擊成功率(ASRASRASR)
      • Top-K成功率(SuccessRate@kSuccessRate@kSuccessRate@k)
  4. 組件開源

    為了驗證這些CodeLM研究的可復現性,研究人員系統地審查了每篇論文,以確保所提供的代碼鏈接是公開可訪問和有效的 。他們將所有論文中包含開源代碼庫的鏈接信息整理并收錄在論文的表12中,以便于未來的研究。

實證研究的實驗設置和評估方法,主要涵蓋四個關鍵方面。

  • 數據集:強調了選擇多樣化且具代表性的數據集的重要性,這些數據集用于代碼生成和對抗性測試等任務。
  • 模型:探討了研究中使用的各種實驗性 CodeLMs,以及如何根據不同任務評估它們的性能。
  • 評估指標:將評估指標分為兩類:一類用于評估攻擊和防御技術的有效性,另一類則用于衡量模型的整體性能(如準確性和效率)。
  • 組件可訪問性:強調了開源代碼庫的必要性,以確保研究的透明度和可復現性,從而促進該領域的更廣泛發展。

挑戰和機遇

  1. 針對攻擊的挑戰和機遇

    • 后門觸發器的隱蔽性:全面評估觸發器的隱蔽性是一大挑戰,因為現有的評估方法未能涵蓋所有檢測維度。

    • 大型語言模型的后門注入:對 Codex、GPT-4 等閉源大型 CodeLMs 注入后門成本高昂且難度極大。隨著模型規模和魯棒性的增強,后門攻擊的有效性會降低。

    • 對抗樣本的質量:確保對抗樣本在擾動后仍能保持語法正確性和語義一致性是一大挑戰。

    • 可解釋性的雙刃劍:提升模型可解釋性有助于深入理解攻擊原理,但同時也可能幫助攻擊者更精準地設計觸發器或尋找攻擊向量 。

    • 探索其他攻擊類型:除了后門和對抗攻擊,未來的研究還應探索其他新興威脅,如隱私泄露、成員推斷攻擊和水印攻擊等。

  2. 針對防御的機遇和挑戰

    • 平衡防御有效性與模型性能:精準檢測投毒樣本同時又不產生高誤報率是挑戰 。在提高模型魯棒性的同時,如何避免影響其正常性能,尤其是在大型模型上,是一個重大難題。

    • 多場景防御:未來研究應探索在 CodeLMs 整個生命周期(訓練前、訓練中、訓練后)實施綜合防御策略,以增強模型安全。

    • 利用可解釋性進行防御:提高 CodeLMs 的可解釋性可以幫助防御者更好地理解模型漏洞,從而超越或至少跟上攻擊技術的發展步伐。

    • 應對新興威脅:開發新的防御策略來應對隱私泄露和成員推斷攻擊等新興安全威脅至關重要。

總而言之,攻擊者與防御者之間的攻防戰是一個持續演變的博弈過程,雙方都可以利用新技術來獲得優勢。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/95986.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/95986.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/95986.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[光學原理與應用-422]:非線性光學 - 計算機中的線性與非線性運算

在計算機科學中,線性運算和非線性運算是兩類核心的數學操作,它們在算法設計、數據處理、機器學習等領域有廣泛應用。兩者的核心區別在于是否滿足疊加原理(即輸入信號的線性組合的輸出是否等于輸出信號的線性組合)。以下是詳細解釋…

Day21_【機器學習—決策樹(3)—剪枝】

決策樹剪枝是一種防止決策樹過擬合的一種正則化方法;提高其泛化能力。決策樹在訓練過程中如果生長過深、過于復雜,會過度擬合訓練數據中的噪聲和異常值,導致在新數據上表現不佳。剪枝通過簡化樹結構,去除不必要的分支,…

從零構建企業級LLMOps平臺:LMForge——支持多模型、可視化編排、知識庫與安全審核的全棧解決方案

🚀 從零構建企業級LLMOps平臺:LMForge——支持多模型、可視化編排、知識庫與安全審核的全棧解決方案 🔗 項目地址:https://github.com/Haohao-end/LMForge-End-to-End-LLMOps-Platform-for-Multi-Model-Agents ? 歡迎 Star &…

如何使顯示器在筆記本蓋上蓋子時還能正常運轉

1、搜索找到控制面板,打開進入 2、找到硬件和聲音,進入 3、選擇電源選項 4、選擇 選擇關閉筆記本計算機蓋的功能 5、把關閉子蓋時,改成不采取任何操作 參考鏈接:筆記本電腦合上蓋子外接顯示器依然能夠顯示設置_筆記本合上外接顯示…

FPGA學習筆記——SDR SDRAM的讀寫(調用IP核版)

目錄 一、任務 二、需求分析 三、Visio圖 四、具體分析 1.需要注意的問題 (1)器件SDRAM需要的時鐘 (2)跨時鐘域(異步FIFO) 2.模塊分析和調用 (1)SDR SDRAM IP核調用 &…

離散數學學習指導與習題解析

《離散數學學習指導與習題解析(第2版)》是屈婉玲、耿素云、張立昂編著的《離散數學(第2版)》的配套參考書,旨在為學生提供系統的學習指導和豐富的習題解析。本書內容全面,涵蓋數理邏輯、集合論、代數結構、…

Qt網絡通信服務端與客戶端學習

Qt網絡通信服務端與客戶端學習 一、項目概述 本項目基于Qt框架實現了TCP服務端與客戶端的基本通信,涵蓋連接、消息收發、斷開管理等功能,適合初學者系統學習Qt網絡模塊的實際用法。 二、項目結構 52/ 服務端:main.cpp、widget.cpp、widget.h5…

神馬 M60S++ 238T礦機參數解析:高效SHA-256算法比拼

1. 算法與適用幣種神馬 M60S 238T采用SHA-256算法,適用于挖掘主流的加密貨幣,包括比特幣(BTC)和比特幣現金(BCH)。SHA-256(安全哈希算法256位)是一種廣泛應用于比特幣等加密貨幣挖礦…

[特殊字符] 深入理解操作系統核心特性:從并發到分布式,從單核到多核的全面解析

🚀 深入理解操作系統核心特性:從并發到分布式,從單核到多核的全面解析💡 前言:操作系統是計算機的靈魂,它就像一個優秀的管家,協調著硬件和軟件之間的關系。今天,我們將深入探討操作…

人工智能機器學習——聚類

一、無監督學習(Unsupervised Learning)機器學習的一種方法,沒有給定事先標記過的訓練示例,自動對輸入的數據進行分類或分群。優點: 算法不受監督信息(偏見)的約束,可能考慮到新的信息不需要標簽數據&#…

優化MySQL分區表備份流程詳解

在大型數據驅動應用中,MySQL分區表是優化查詢和維護歷史的常見選擇。但隨之而來的數據備份問題卻讓許多開發者頭疼:如何確保分散在不同分區的數據能完整、一致地被備份,并在需要時快速恢復?手動處理不僅繁瑣,而且極易出…

用 Go + HTML 實現 OpenHarmony 投屏(hdckit-go + WebSocket + Canvas 實戰)

本文帶你用 Go HTML/WebSocket 從零實現一個 OpenHarmony 設備投屏 Demo:Go 側用 hdckit-go 連接設備并抓取屏幕幀(UiDriver),通過 WebSocket 二進制實時推送到瀏覽器,前端用 Canvas 渲染,并根據設備分辨率…

運籌學——求解線性規劃的單純形法

單純形法的原理 先來舉個例子: 用單純形法求解下面線性規劃問題的最優解:注釋:解的過程是反復迭代的過程,如果第一次迭代沒有理解也沒關系,再繼續看第二次迭代,和第三次迭代,每次迭代的流程都是…

Python GUI 框架 -- DearPyGui 簡易入門

DearPyGui 關于 DPG 是一個簡單且功能強大的 Python 圖形用戶界面框架。 與其他Python圖形用戶界面庫相比,DPG具有以下獨特之處: GPU 渲染多線程高度可定制內置開發人員工具:主題檢查、資源檢查、運行時指標帶有數百種小部件組合的 70 多…

gcloud cli 使用 impersonate模擬 服務帳號

什么是模擬服務帳號 眾所周知, gcloud 登陸的方式有兩種 使用個人帳號, 通常是1個郵箱地址使用一個service account 通常是1個 json key 文件 所謂模式服務帳號意思就是, 讓操作人員用個人帳號登陸, 但是登陸后所有的操作都是基于…

idf--esp32的看門狗menuconfig

1.Interrupt Watchdog Timeout (ms):意思是中斷看門狗,也就是專門監管中斷響應時間的看門狗,如果某個中斷服務程序超過了這個運行時間,就會導致程序重啟。2.紅框是任務看門狗的最大看門時間,超過時間就會警告&#xff…

git在Linux中的使用

git-Linux中的使用一、下載git二、https方式上傳三、ssh秘鑰方式上傳一、下載git 版本信息 [rootrocky ~]# cat /etc/rocky-release Rocky Linux release 9.4 (Blue Onyx) [rootrocky ~]# cat /etc/rocky-release-upstream Derived from Red Hat Enterprise Linux 9.4 [rootro…

HMI(人機界面)

新晉碼農一枚,小編定期整理一些寫的比較好的代碼,作為自己的學習筆記,會試著做一下批注和補充,轉載或者參考他人文獻會標明出處,非商用,如有侵權會刪改!歡迎大家斧正和討論!一、核心…

嵌入式解謎日志—多路I/O復用

多路 I/O復用(Multiplexed I/O):1.定義:系統提供的I/O事件通知機制2.應用:是一種 I/O 編程模型,用于在單線程中同時處理多個(阻塞) I/O 操作,避免因等待某個 I/O 操作完成…

關于嵌入式學習——單片機4

ds18b20溫度傳感器的使用一、傳感器分類:數字溫度傳感器,實現簡單,不需要額外轉換電路,采集過來的就是數字溫度值模擬溫度傳感器->熱敏電阻->AD轉換電路->數字值二、傳感器接口:GPIO接口:&#xf…