Direct Prompt Injection 是使用者自己遞出惡意紙條。Indirect Prompt Injection 的紙條,早就夾在你要讀的文件裡。
你只是叫 Agent「幫我摘要這個網頁」,攻擊者卻把「忽略原任務」藏在網頁、PDF 或工具回傳裡。麻煩之處在於,這段文字不會長得像可疑輸入——它是 Agent 被你合法要求去讀的內容。
使用者任務 → Agent 讀取外部內容 → 惡意文字進入上下文(Context)→ 資料被誤認成指令 → Agent 做出非預期動作
所以真正決定損害大小的,是 Agent 手上有什麼。這裡要算兩種東西。
一是它能呼叫的工具。能讀信箱、存取檔案或呼叫 API,一段藏在網頁裡的文字就能一路推到真實世界。
二是它的輸出會被誰渲染——這一項最常被漏掉。就算 Agent「只會摘要」,它也可以在摘要裡生一個指向攻擊者伺服器的圖片連結,把剛讀到的內容塞進網址參數裡;渲染器自動抓圖,資料就出去了。全程沒有任何工具呼叫。
EchoLeak(CVE-2025-32711)就是這樣打的。攻擊者寄一封信給受害者,M365 Copilot 讀到信裡的隱藏指令後外傳內部檔案,零點擊,CVSS 9.3。過程中它繞過了微軟自己的 prompt injection 分類器,並利用自動載入的圖片當作外傳通道。
這類攻擊對應 OWASP Top 10 for Agentic Applications 2026 的 ASI01(Agent Goal Hijack)。如果被污染的內容還寫進了長期記憶,下一次對話就會被上一次的攻擊影響,那是 ASI06(Memory & Context Poisoning)。
因此第一道防線是最小權限:即使模型判斷錯,它也拿不到完成危險動作的能力。
人工確認則要加在對的地方。讓人去審那段外部內容沒有用——沒有人會逐字讀完 5000 字網頁,找藏在白字、HTML 註解或圖片 alt 裡的指令。有用的是把關卡設在有副作用的動作上:寄信前確認收件人,付款前確認金額。人審的是動作,不是內容。
防 Prompt Injection,不是期待模型永遠不被騙,而是被騙之後也推不開下一扇門。
Kai Greshake, Sahar Abdelnabi, Shailesh Mishra, Christoph Endres, Thorsten Holz & Mario Fritz, Not What You've Signed Up For: Compromising Real-World LLM-Integrated Applications with Indirect Prompt Injection, AISec '23, pp. 79–90(arXiv:2302.12173)。攻擊示範與完整 prompt 收錄於作者的 GitHub repo。
Pavan Reddy & Aditya Sanjay Gujral, EchoLeak: The First Real-World Zero-Click Prompt Injection Exploit in a Production LLM System, arXiv:2509.10540, 2025。EchoLeak 的完整技術拆解。
OWASP, Top 10 for Agentic Applications 2026, ASI01、ASI06。