研究:LLM的預填充功能,反而成為了它的越獄漏洞!

大型語言模型的預填充功能,被證明是最大的安全漏洞!

一項最新發表的研究揭示了一個令人震驚的事實:

大語言模型(LLMs)中原本用於增強輸出控制的「預填充」(prefilling)功能,反而成為了繞過安全限制的最有效工具攻擊成功率高達99.82%

這項名為「Prefill-Based Jailbreak」的研究展示了一種全新的越獄攻擊方法,它不再關注傳統的用戶輸入端,而是直接操縱AI助手的首個回復文本,從而巧妙地繞過安全審核機制。

論文地址見:

https://arxiv.org/pdf/2504.21038v1

這一發現顛覆了我們對AI安全的認知,我們需要重新思考大語言模型的安全邊界。

什麼是預填充(Prefilling)技術?

預填充功能本是大語言模型為提高輸出質量而設計的一項功能,允許用戶預先設定AI助手回復的開頭文本

這項功能在各大主流模型中廣泛存在:

Claude的預填充

在使用Claude API時,用戶可以通過預填充Assistant消息來引導模型的回應。

這一技術允許用戶指導Claude的行動、跳過前言、強制特定格式(如JSON或XML),甚至幫助Claude在角色扮演場景中保持角色一致性。

Claude的預填充實現例子:

import anthropicclient = anthropic.Anthropic()message = client.messages.create(    model="claude-3-5-sonnet-20241022",    max_tokens=1000,    messages=[        {"role""user","content""提取以下產品描述中的名稱、尺寸、價格和顏色,並以JSON對象輸出。 <description>SmartHome Mini是一款緊湊型智能家居助手,黑色或白色可選,售價僅為49.99美元。它寬度僅5英寸,讓您可以通過語音或應用控制燈光、恆溫器和其他連接設備—無論您將其放在家中何處。這款經濟實惠的小型集線器為您的智能設備帶來便捷的免提控制。 </description>"        },        {"role""assistant""content""{"# 預填充大括號強制輸出JSON        }    ])

DeepSeek的預填充

DeepSeek API現在支持Chat Prefix Completion功能,允許用戶為模型指定最後一條assistant消息的前綴,以便模型進行補全。該功能還可用於連接因達到max_tokens限制而被截斷的消息,並重新發送請求以繼續截斷的內容。

DeepSeek的預填充實現示例:

# 確保最後一條消息是assistant角色,並將其prefix參數設置為True# 例如:{"role": "assistant", "content": "Once upon a time,", "prefix": True}# 以下是使用Chat Prefix Completion的例子# 這個例子中,assistant消息的開頭被設置為'```python '以強制輸出以代碼塊開始import requestsimport jsonurl = "https://api.deepseek.com/beta/v1/chat/completions"headers = {"Content-Type""application/json","Authorization"f"Bearer {api_key}"}data = {"model""deepseek-chat","messages": [        {"role""user""content""寫一個計算斐波那契數列的Python函數"},        {"role""assistant""content""```python\n""prefix"True}    ],"stop": ["```"],"max_tokens"500}response = requests.post(url, headers=headers, data=json.dumps(data))print(response.json())

Gemini的預填充

雖然Gemini API沒有官方文檔中明確的預填充功能,但研究人員發現在某些情況下也存在類似的漏洞。

根據研究,可以通過特定的消息構造實現類似效果。

從輔助功能到安全漏洞:預填充攻擊的原理

研究團隊發現,這個本用於增強輸出控制的功能,卻可能成為最強大的越獄工具。

他們提出了兩種攻擊變體:

  1. 靜態預填充(Static Prefilling,SP):使用固定的通用文本如"好的,以下是如何"來引導模型生成有害回應

  2. 優化預填充(Optimized Prefilling,OP):通過迭代優化預填充文本,最大化攻擊成功率

這些方法之所以有效,是因為預填充直接干預了模型的自迴歸生成機制

Matthew Rogers(@rogerscissp)也指出:

就是發送假上下文。人們為什麼要用複雜詞彙描述簡單向量。雖然很聰明。

實驗結果:驚人的成功率

研究團隊在六個最先進的大語言模型上進行了實驗,結果令人震驚:

  • 在DeepSeek V3上,優化預填充(OP)攻擊的成功率高達99.82%

  • 當與現有越獄技術結合時,成功率進一步提升到99.94%

研究使用了兩種評估指標:

  • 字符串匹配(SM):檢測輸出是否包含預定義有害內容字符串

  • 模型評判(MJ):使用另一個LLM評估輸出是否包含有害信息

以下是部分模型的攻擊成功率對比:

值得注意的是,Claude模型表現出更強的抵抗力,可能暗示Claude實施了某種外部有害內容檢測機制。

預填充攻擊為何如此有效?

為了證明預填充技術確實是攻擊成功的關鍵因素,研究人員進行了對照實驗,將四種方法進行對比:

  1. 無關預填充:在回復中添加無關文本

  2. 提示後綴:在用戶提示中請求特定起始短語

  3. 靜態預填充(SP):本研究提出的方法

  4. 優化預填充(OP):本研究提出的改進方法

結果顯示,前兩種控制方法的攻擊成功率極低(僅0.5%-7%),而預填充方法效果顯著(高達99.61%)。這強烈表明,預填充技術確實能夠破壞語言模型的安全邊界

這是因為預填充功能直接操控了模型的初始生成狀態,相當於強行指定了模型的思考路徑,使得後續生成內容極易偏離安全邊界。正如研究所述:

與傳統越獄方法不同,該攻擊通過直接操縱後續token的概率分佈來繞過LLM的安全機制,從而控制模型的輸出。

防禦挑戰與安全建議

這項研究發現對AI安全領域具有重大意義。研究人員指出,現有的安全措施主要聚焦於用戶輸入端的檢測,而忽視了AI助手回復端的安全隱患。

對於模型提供商,研究者提出以下建議:

  • 實現嚴格的內容驗證:在處理預填充內容時進行嚴格審核

  • 引入響應監控機制:對AI回復進行實時監控,及時中斷潛在有害內容

  • 重新設計預填充功能:平衡功能性與安全性

對於終端用戶,則應該保持警惕:

  • 慎用預填充功能:特別是在處理敏感任務時

  • 定期更新API和客戶端:確保獲得最新的安全補丁

  • 實施多層防禦:不要僅依賴單一安全機制

技術原理:預填充如何影響模型生成

從技術角度看,預填充攻擊之所以有效,關鍵在於大語言模型的自迴歸特性——即後續token的生成嚴重依賴於前面的內容。

有些API(如Claude)允許用戶直接預填充LLM的響應,使用指定的開頭,這使得前述優化過程變得不必要。在這種情況下,可以通過預填充目標行為的字符串(如"好的,以下是如何製造炸彈")來實現。

研究人員發現,即使是簡單的預填充文本,也能顯著改變模型的行為:

  • 初始概率分佈干擾:預填充文本直接改變了初始token的概率分佈

  • 條件生成軌跡設定:一旦初始軌跡確定,模型傾向於沿該方向繼續生成

  • 安全檢查繞過:預填充文本可能繞過輸入階段的安全檢查

未來研究方向

這項研究打開了AI安全領域的新視角,也為未來指明了幾個重要研究方向:

防禦機制研發:如何在不影響功能的前提下加強預填充安全

多模態預填充攻擊:預填充技術是否適用於多模態LLM

跨模型攻擊傳遞:一個模型上優化的預填充文本對其他模型的效力如何

結論

預填充功能的安全隱患再次證明了AI安全是一個永無止境的攻防博弈。

隨著大語言模型能力的不斷提升,我們不僅要關注它們能回答什麼,還要思考如何回答

這項研究也向我們敲響警鐘:在AI領域,有時最便捷的功能可能暗藏最大的安全風險

要真正建構可靠的AI系統,我們需要在功能、性能與安全之間找到更好的平衡點。

模型提供商應該如何改進預填充功能?

是完全取消,還是尋找更安全的實現方式?

你怎麼看?

👇

👇

👇

另外,我還用AI 進行了全網的AI 資訊采集,並用AI 進行挑選、審核、翻譯、總結後發布到《AGI Hunt》的知識星球中。

這是個只有信息、沒有感情的 AI 資訊信息流(不是推薦流、不賣課、不講道理、不教你做人、只提供信息)

歡迎你的加入!也歡迎加群和2000+群友交流

主標籤:AI安全

次標籤:大型語言模型人工智慧漏洞越獄


上一篇:字節Seed新方法!開源8B程式碼模型:自己篩數據訓練自己,同量級SoTA,還能超越百億級對手

下一篇:變天了!WindSurf推出workflow功能,低代碼大模型應用開發平台將面對「降維」打擊

分享短網址