提示詞注入與越獄
提示詞注入的完整入門——大型語言模型應用程式中最根本的漏洞類別——以及它與越獄技術的關係。
提示詞注入之於大型語言模型應用程式,正如同 SQL 注入之於 web 應用程式:一種因在同一個通道中混合可信指令與不可信資料而產生的根本性漏洞類別。它是 AI 紅隊演練中最重要的單一主題,因為它鎖定任何由大型語言模型驅動之應用程式的核心 攻擊面。
核心概念
提示詞注入發生在攻擊者打造的輸入導致模型偏離其原本指令、轉而遵循攻擊者提供的指示時。它利用了系統提示詞與使用者輸入之間缺乏權限分離的特性(請參閱 大型語言模型內部原理)。
越獄是相關但不同的概念:它指的是讓模型繞過其安全對齊並產出原本被訓練為拒絕之輸出的技術。提示詞注入鎖定應用層級的指令,越獄則鎖定模型自身的安全訓練。
| 概念 | 目標 | 目的 | 範例 |
|---|---|---|---|
| 提示詞注入 | 應用程式指令 | 覆寫系統提示詞行為 | "Ignore your instructions and..." |
| 越獄 | 安全對齊 | 繞過拒答訓練 | 角色扮演情境、編碼技巧 |
| 間接注入 | 資料管線 | 透過第三方內容注入 | 藏於網頁中的惡意指令 |
注入分類學
本節依精密程度由淺入深,涵蓋提示詞注入與越獄的五個領域:
為何提示詞注入難以修復
根本挑戰在於大型語言模型將指令與資料以相同方式處理——都作為符元序列。目前沒有對應於 SQL 的 prepared statement 機制,能在結構上將程式碼與資料分離。
SQL Injection: SELECT * FROM users WHERE name = '{user_input}'
Prompt Injection: System: {instructions}\nUser: {user_input}
Both mix trusted logic with untrusted data in the same channel.
目前提出的緩解方式包含指令階層訓練、輸入/輸出過濾,以及以分隔符進行分離,但每一項都存在已知的繞過方式:
- 指令階層 ——可被足夠有說服力或格式特殊的注入覆寫
- 輸入過濾 ——可被編碼、分詞技巧或語意改寫所繞過
- 分隔符 ——模型沒有任何機制能強制分隔符的語意
從何開始
若您是 AI 紅隊演練的新手,請從 直接注入 開始,理解基本機制,然後按順序完成其餘頁面。每一頁都建立在前一頁的概念之上。
相關主題
- 大型語言模型基礎 ——使提示詞注入成為可能的核心架構
- 代理與代理式利用——當代理可存取工具時,提示詞注入的危害如何升級
- 護欄與過濾 ——為偵測與防止注入攻擊所設計的防禦
- 實驗:第一次注入 ——透過實作練習基本注入技術
- 間接注入研究 ——生產環境中最危險的變體
參考文獻
- Perez, F. & Ribeiro, I. (2022). "Ignore This Title and HackAPrompt: Evaluating and Eliciting Prompt Injection Attacks"
- Greshake, K. et al. (2023). "Not What You've Signed Up For: Compromising Real-World LLM-Integrated Applications with Indirect Prompt Injection"
- OWASP (2025). OWASP Top 10 for LLM Applications
- Wei, A. et al. (2023). "Jailbroken: How Does LLM Safety Training Fail?"
- Liu, Y. et al. (2024). "Prompt Injection Attack Against LLM-Integrated Applications"
提示詞注入與越獄之間的根本差異是什麼?