大型語言模型的預填充功能,被證明是最大的安全漏洞!
一項最新發表的研究揭示了一個令人震驚的事實:
大語言模型(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沒有官方文檔中明確的預填充功能,但研究人員發現在某些情況下也存在類似的漏洞。
根據研究,可以通過特定的消息構造實現類似效果。
從輔助功能到安全漏洞:預填充攻擊的原理
研究團隊發現,這個本用於增強輸出控制的功能,卻可能成為最強大的越獄工具。
他們提出了兩種攻擊變體:
靜態預填充(Static Prefilling,SP):使用固定的通用文本如"好的,以下是如何"來引導模型生成有害回應
優化預填充(Optimized Prefilling,OP):通過迭代優化預填充文本,最大化攻擊成功率
這些方法之所以有效,是因為預填充直接干預了模型的自迴歸生成機制。
Matthew Rogers(@rogerscissp)也指出:
就是發送假上下文。人們為什麼要用複雜詞彙描述簡單向量。雖然很聰明。
實驗結果:驚人的成功率
研究團隊在六個最先進的大語言模型上進行了實驗,結果令人震驚:
在DeepSeek V3上,優化預填充(OP)攻擊的成功率高達99.82%
當與現有越獄技術結合時,成功率進一步提升到99.94%
研究使用了兩種評估指標:
字符串匹配(SM):檢測輸出是否包含預定義有害內容字符串
模型評判(MJ):使用另一個LLM評估輸出是否包含有害信息
以下是部分模型的攻擊成功率對比:
值得注意的是,Claude模型表現出更強的抵抗力,可能暗示Claude實施了某種外部有害內容檢測機制。
預填充攻擊為何如此有效?
為了證明預填充技術確實是攻擊成功的關鍵因素,研究人員進行了對照實驗,將四種方法進行對比:
無關預填充:在回復中添加無關文本
提示後綴:在用戶提示中請求特定起始短語
靜態預填充(SP):本研究提出的方法
優化預填充(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+群友交流