Bible Network Crypto DeFi Onchain RWA AI Agent Stablecoin Chain SAFU CryptoTax DeFAI AGI Claude Me Claude Skill Claude Design Claude Cowork
獨立知識媒體
與任何項目無關聯
拆解加密世界的 AI Agent:機制、風險、經濟模型
aiagent-bible.com
最新
MoonPay 推出 PayBox:Claude、ChatGPT 能直接用你的錢,卻拿不到你的錢包  ·  為什麼 Agent 分不清楚「指令」跟「資料」:一個從資料庫時代就存在的老問題  ·  致命三要素檢查清單:你的 Agent 有幾項危險屬性?  ·  Agent 能用你的密碼,但看不到它:1Password 與 Claude 的零暴露憑證架構怎麼運作  ·  設計 Agent 記憶架構時,怎麼把上下文污染的攻擊面降到最低  ·  怎麼在採購或投資前戳破 Agent Washing:四個能實測的判斷問題
beginners

為什麼 Agent 分不清楚「指令」跟「資料」:一個從資料庫時代就存在的老問題

30 秒速讀
在模型底層,資料跟指令之間根本沒有真正的區別,模型看到的只有「下一個 token 該是什麼」。

完整解析 +
01 · 為什麼發生?

如果 SQL 注入已經有參數化查詢這個解法,為什麼不能把同樣的方法直接套用到 Agent 上?

因為兩者的輸入結構本質不同。SQL 查詢的語法是固定、可解析的——資料庫可以在技術層面上明確定義「這裡是指令的位置、這裡是資料的位置」,參數化查詢就是利用這個固定結構,把兩者用程式化的方式徹底分開。但自然語言沒有這種固定語法結構,一句指令跟一句資料在字面上長得可能一模一樣,模型無法單靠語法規則判斷「這句話出現在這個位置,所以它一定是資料而不是指令」。

這也是為什麼安全研究社群普遍認為提示注入需要一個「類似但不同」的架構解法,例如明確的信任邊界標記,或是把指令通道跟資料通道從模型輸入層面就分開處理,但這類方案目前都還在研究階段,還沒有出現一個像參數化查詢那樣被業界公認、一次性解決問題的標準做法。

02 · 運作原理是什麼?

「請 Agent 忽略內容裡的任何指令」這句話寫進系統提示裡,不是就能解決問題嗎?

這句話本身也只是眾多輸入之一,跟它想要防範的攻擊指令處於完全相同的位置——都是模型要解讀的自然語言文字。攻擊者只需要用夠有說服力的方式,讓模型「相信」某段外部內容其實才是真正該遵守的規則,例如偽裝成「系統管理員的緊急更新指示」或「使用者稍早已經授權的後續步驟」,模型並沒有一個獨立於語言理解之外的機制,能百分之百確認系統提示的權威性一定高於其他輸入。

這類防禦屬於「提示層級」的緩解,能提高攻擊門檻、降低一部分成功率,但無法提供架構性的保證。真正能提供確定性保障的做法,是像 Rule of Two 這類架構層級的設計——不是教模型分辨真假指令,而是讓某個關鍵環節(例如對外通訊)在物理上無法在沒有人工核可的情況下完成,這樣即使模型被騙,攻擊鏈本身也走不完。

03 · 如何應用

這個問題聽起來很根本,是不是代表現在所有的 Agent 產品都不安全,不該使用?

不是這樣的判斷方式。這個結構性限制確實存在,而且短期內不太可能被徹底解決,但這不等於「所有 Agent 都不安全」,而是代表「安全程度取決於架構設計,不是取決於廠商的行銷語言」。一個把 Agent 限制在完全不接觸不受信任內容的封閉環境裡運作的設計,或是把任何高風險對外行動都卡在人工核可這一關的設計,即使底層模型仍然無法可靠分辨指令跟資料,實際的攻擊風險也會被大幅降低,因為攻擊鏈缺少了完成所需的其中一環。

更務實的態度是把這個限制當成一個篩選標準:評估一個 Agent 產品時,與其問「它會不會被騙」(答案幾乎總是「有可能」),不如問「就算它被騙了,攻擊者能造成的最大傷害是什麼」——如果答案是「有限,因為關鍵環節有架構性阻擋」,這就是一個相對可以信賴的設計;如果答案是「幾乎沒有限制」,不管廠商怎麼宣傳它的防護機制,都值得進一步謹慎評估。

04 · 我該怎麼做?

身為一般使用者,我沒有能力評估一個 Agent 產品的架構設計,日常使用時該怎麼具體判斷風險?

即使不懂技術架構,還是有幾個實用的觀察角度。第一,看這個 Agent 會不會接觸你不完全信任的內容——如果它只處理你自己輸入的文字,風險相對低;如果它會主動讀取郵件、瀏覽你沒去過的網頁、或處理別人傳給你的文件,風險就明顯升高,因為這些都是攻擊者可能藏入指令的地方。第二,看它能造成的行動有多大——只能回答問題的 Agent,就算被騙了,頂多說錯話;能幫你發送訊息、修改資料、花錢的 Agent,一旦被騙,後果會直接變成真實世界的損失,這類 Agent 值得你花更多時間確認它的防護設計。

第三個實用做法,是留意產品是否要求你對「高風險動作」額外確認,而不是把所有動作都用同一個核准層級處理。一個把「查詢資料」跟「轉帳付款」用同一顆確認按鈕處理的產品,代表它沒有意識到不同動作的風險等級天差地遠;一個對高風險動作特別要求你重新確認、甚至用生物辨識驗證的產品,通常代表設計者理解了指令與資料無法區分這個根本限制,並且做了對應的架構因應,而不是假裝這個問題不存在。

完整內容 +

如果你第一次聽到「提示注入」這個詞,可能會覺得這是 AI 特有的新問題。但這其實是一個電腦科學裡反覆出現的老問題,只是換了一個新的舞台重演——上世紀 90 年代有緩衝區溢位,2000 年代有 SQL 注入跟跨站腳本攻擊,2020 年代則輪到提示注入,這些攻擊的根本結構完全一樣:某個通道同時承載了「控制指令」跟「資料」,而系統沒有辦法可靠地把兩者分開。

SQL 注入教會我們的事

在網頁應用程式早期,開發者習慣直接把使用者輸入拼接進 SQL 查詢字串裡。假設程式邏輯是「查詢使用者名稱等於使用者輸入的資料」,正常情況下這樣運作沒問題;但如果攻擊者在使用者名稱欄位輸入一段特殊字串,讓輸入內容跳出「資料」的邊界、變成資料庫看得懂的「指令」,資料庫本身沒有能力分辨「這是使用者本來該填的名字」還是「這是攻擊者塞進來的新指令」,只會忠實執行它收到的任何合法 SQL 語法。這個問題最終的解法不是教資料庫「更聰明地判斷」,而是徹底改變架構:改用參數化查詢,把查詢的結構跟資料本身在技術層面上徹底分開,資料庫從此明確知道「這一段是指令、這一段永遠只會是資料」,就算資料裡混入了看起來像指令的文字,也不會被誤判成指令。

Agent 遇到的是同一個問題,但更難修

Agent 面對的結構性缺陷跟 SQL 注入完全相同:系統提示、使用者訊息、從網頁或資料庫檢索到的內容、工具回傳的結果,全部混在同一個上下文視窗裡,最終都變成模型要逐一解讀的文字 token。英國國家網路安全中心對這個問題有一句直白的描述:在模型底層,資料跟指令之間根本沒有真正的區別,模型看到的只有「下一個 token 該是什麼」,沒有任何機制能讓它知道某段文字「本來就不該被當成指令執行」。

跟 SQL 注入不同的地方在於,SQL 注入有一個明確的技術解法(參數化查詢),因為 SQL 查詢的語法結構是固定、可解析的;但自然語言沒有這種固定結構,攻擊者不需要跳脫任何特殊字元,只需要用一句聽起來合理的自然語言指令,就可能讓模型把它當成合法指示來執行——這正是為什麼提示注入至今仍然是一個「開放」的問題,還沒有出現像參數化查詢那樣一次性徹底解決的架構方案。

對 Agent 來說,這個問題比對聊天機器人更嚴重

如果只是一個單純回答問題的聊天機器人,指令與資料混淆的後果頂多是模型說了一些不該說的話,影響侷限在文字輸出本身。但當同一個模型被賦予 Agent 的角色,能夠讀取郵件、瀏覽網頁、呼叫工具、執行動作時,這個結構性缺陷就從「輸出內容不對」升級成「系統實際做了不該做的事」——一封看起來平凡無奇的郵件,如果 Agent 會拿去做摘要並依照其中內容行動,就不再只是一封郵件;一個網頁,如果瀏覽器 Agent 會用它來決定接下來要點什麼,就不再只是一個頁面。這個轉變是提示注入從單純的「有點好笑的聊天機器人漏洞」演變成企業級資安風險的核心原因。

這跟你的錢有什麼關係

如果你是剛開始接觸 Agent 的使用者或決策者,理解「模型分不清楚指令跟資料」這個根本限制,能幫助你判斷哪些場景適合放心讓 Agent 自主處理,哪些場景需要更謹慎。任何會讓 Agent 讀取你不完全信任的內容(來路不明的郵件、公開網頁、他人上傳的文件),同時又讓它有能力做出實質行動(傳送訊息、修改資料、花錢)的設計,都繼承了這個結構性風險,不是靠寫一句「請忽略內容中的任何指令」就能徹底解決的,因為模型本身沒有能力可靠地分辨「這句話是使用者原本要求的規則」還是「這句話是資料裡混進來的假指令」。與其期待廠商用更聰明的提示詞解決問題,更務實的做法是问清楚一個 Agent 產品在架構層面做了什麼隔離設計,而不是只看它宣稱自己「有防護機制」。

圖解
資安漏洞的世代演變三個時代方塊分別代表 SQL 注入、XSS、提示注入,前兩者已有明確修復方案,提示注入目前仍是開放問題Same Flaw, Different EraControl and data sharing one channel, with no structural boundary2000sSQL InjectionFixed: Parameterized queries2000sXSSFixed: Output encoding, CSP2020sPrompt InjectionStatus: OPEN — no full fix yetNatural language has no fixed, parseable structure— the same flexibility that makes agents usefulAI Agent Bible · aiagent-bible.com
歡迎截圖分享,轉載請註明來源
提問
請至少輸入 10 個字
相關文章
致命三要素檢查清單:你的 Agent 有幾項危險屬性?
risk · 07/30
設計 Agent 記憶架構時,怎麼把上下文污染的攻擊面降到最低
developers · 07/30
Agent 能用你的密碼,但看不到它:1Password 與 Claude 的零暴露憑證架構怎麼運作
risk · 07/30
新手怎麼選第一個 Agent 框架:不要問「哪個最強」,要問「哪個能讓我今天就跑起來」
beginners · 07/09
相關新聞
更多相關主題