USENIX Sec’25 | LLM提示詞注入攻擊如何防?UC伯克利、Meta最新研究來了

AIxiv專欄是機器之心發佈學術、技術內容的欄目。過去數年,機器之心AIxiv專欄接收報導了2000多篇內容,覆蓋全球各大高校與企業的頂級實驗室,有效促進了學術交流與傳播。如果您有優秀的工作想要分享,歡迎投稿或者聯繫報導。投稿郵箱:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com

本文介紹對 LLM 提示詞注入攻擊(prompt injection)的通用防禦框架。首篇論文已被安全頂會 USENIX Security 2025 接收,第一作者陳思哲是 UC Berkeley 計算機系博士生,Meta FAIR 訪問研究員,研究興趣為真實場景下的 AI 安全。他的導師是 David Wagner (UCB), 郭川 (Meta), Nicholas Carlini (Google)。

一作主頁:https://sizhe-chen.github.io

項目報告 slides:https://drive.google.com/file/d/1baUbgFMILhPWBeGrm67XXy_H-jO7raRa/view?usp=sharing

  • 論文地址:https://arxiv.org/pdf/2402.06363

  • 項目主頁:https://sizhe-chen.github.io/StruQ-Website

  • 代碼倉庫:https://github.com/Sizhe-Chen/StruQ

  • 論文地址:https://arxiv.org/pdf/2410.05451

  • 項目主頁:https://sizhe-chen.github.io/SecAlign-Website

  • 代碼倉庫:https://github.com/facebookresearch/SecAlign

提示詞注入攻擊:背景

LLM 強大的語言能力,使其被廣泛部署於 LLM 應用系統(LLM-integrated applications)中。此時,LLM 需要訪問外部數據(如文件,網頁,API 返回值)來完成任務。在這個交互場景下,有以下三方:

  • 指令(可信的):來自 LLM 應用系統開發者

  • 模型(可信的):來自開發者或 API 供應方

  • 數據(不可信的):來自外部或第三方

系統對外部數據源的訪問,提供了全新的攻擊視角:攻擊者可以在第三方數據中,注入額外的指令,以覆蓋 LLM 應用的原指令。如下圖所示,餐廳 A 的老闆在點評網站 yelp 上,發佈一條含有提示詞注入攻擊的評論,誤導 LLM 忽視其原指令(推薦一些好餐廳),轉而推薦風評不佳的餐廳 A。

提示詞注入攻擊,被 OWASP 安全社區列為對 LLM 應用系統的最大威脅 [1],對更廣泛的 LLM 應用造成重大安全阻礙。部署的工業級 LLM 應用系統(Google Docs [2], Slack AI [3], ChatGPT [4]),經測試可以被提示詞注入攻擊攻破,造成私有內容的泄露。

提示詞注入攻擊:原因

第一個原因:LLM 輸入中,沒有分離指令和數據,二者被直接拚接為單個 LLM 輸入。

對此,我們提出一個安全前端(secure front-end),在組織 LLM 輸入時,顯式分離指令和數據。

第二個原因:LLM 訓練中,模型被教導遵循輸入中的任意指令。

對此,我們提出結構化指令微調(structured instruction tuning)全對齊(secure alignment),訓練 LLM 識別安全前端組織的輸入,從中生成高質量的輸出,並對提示詞注入攻擊魯棒。

防禦策略 1:安全前端

在 LLM 輸入上,我們設計只能被系統使用的分隔符(delimiters),分離指令和數據。安全前端會留出一些 LLM special tokens(如下圖中的 [MARK], [INST], …),用於指令 / 數據分離,並刪除數據部分可能含有的特殊分隔符,使其僅能被 LLM 應用系統(而非數據提供方 / 攻擊者)所使用。

防禦策略 2:結構化指令微調

在 LLM 訓練時,我們模擬提示詞注入攻擊,教導模型忽視任何在數據中的注入指令,僅遵循 LLM 應用系統的原指令(由安全前端分離並定義)。具體來說,我們從原指令微調數據集,生成一個新的 「結構化指令微調數據集」,其部分包含帶提示詞注入攻擊的樣本,如下圖所示。在此數據集上,我們利用標準 SFT(supervised fine-tuning)算法微調模型。

防禦策略 3:安全對齊

在 LLM 訓練時,除了指令微調,還有對齊這一步驟,我們同樣可以在此做防禦。安全對齊構建一個偏好數據集(preference dataset),對於每一個 SFT 數據集中的樣本:

  • 采樣另一個隨機樣本 s’,用於模擬提示詞注入攻擊

  • 偏好數據集中,LLM 輸入是被注入了 s’ 指令的樣本 s

  • 偏好數據集中,LLM 理想輸出是對 s 指令的回覆

  • 偏好數據集中,LLM 不良輸出是對 s’ 指令的回覆

在此數據集上,我們利用標準偏好優化(direct preference optimization)算法微調模型。

提示詞注入攻擊:防禦結果

防禦策略 1+2 被稱為 StruQ (USENIX Sec’25),防禦策略 1+3 被稱為 SecAlign。

如下圖所示,StruQ/SecAlign 模型保持和未防禦模型相同的性能(general-purpose utility by AlpacaEval2 WinRate)。

對於無優化的提示詞注入攻擊,StruQ 模型實現了 < 2% 攻擊成功率,SecAlign 實現 0% 攻擊成功率(Max ASR Opt.-Free)。

對於基於優化的提示詞注入攻擊,StruQ 顯著降低其成功率,SecAlign 又進一步將成功率降低 4 倍以上,到 15% 以下(Max ASR Opt.-Based)。

提示詞注入攻擊:防禦總結

我們提出提示詞注入攻擊成功的兩個原因,並逐一對它們設計防禦。

由於 LLM 輸入中,沒有分離指令和數據,我們提出安全前端(secure front-end),在組織 LLM 輸入時,用只能被系統所用的分隔符,分離指令和數據。

由於 LLM 訓練中,模型被教導遵循輸入中的任意指令,我們提出結構化指令微調(structured instruction tuning)和安全對齊(secure alignment),訓練模型只遵循 LLM 應用系統設計的指令。

以下是三個防禦策略,在模型訓練 pipeline 中的位置。

[1] https://owasp.org/www-project-top-10-for-large-language-model-applications

[2] https://embracethered.com/blog/posts/2023/google-bard-data-exfiltration

[3] https://promptarmor.substack.com/p/data-exfiltration-from-slack-ai-via

[4] https://thehackernews.com/2024/09/chatgpt-macos-flaw-couldve-enabled-long.html