iT邦幫忙

2026 iThome 鐵人賽

DAY 14
0
AI Security

合法呼叫湊出的攻擊鏈:AI Agent 防禦的 30 天觀念養成系列 第 14

Day 14|Agent 的執行環境要根據什麼標準來判斷執行路徑是否符合要求?

  • 分享至 

  • xImage
  •  

前言

Day 13 讓我多注意到關於legitimacy_reference的可討論問題。

執行環境要判斷一個工具呼叫能不能執行的時候,手上除了使用者、工具、參數、來源這些資訊之外,還缺一件事:這次執行到底要拿什麼標準來判斷?

如果只看單一工具呼叫,執行環境可以檢查權限、參數或資料來源。但當問題變成「這一連串工具呼叫組合起來是否符合預期」,判斷對象就從單一動作變成了整條執行路徑,問題也跟著變成:

執行環境要根據什麼參照標準,判斷這條執行路徑是否符合要求?


執行環境判斷整條路徑,不代表執行環境改用監控

「整條執行路徑」這個詞很容易被理解成「授權做完之後,再另外加一層監控」,但這兩件事並不是同一件事。UCON(Usage Control)早就處理過持續授權的問題:資源使用期間,授權條件可以隨狀態改變,執行環境也可以重新檢查授權條件。ABAC(Attribute-Based Access Control)同樣可以根據主體、資源、動作與環境屬性進行判斷。

所以需要區分的不是「授權」和「監控」,而是執行環境正在判斷什麼對象。例如:

單一動作:
Agent → 查詢訂單 → 是否允許?

連續動作:
Agent → 查詢訂單 → 修改地址 → 匯出資料 → 是否符合允許的執行流程?

第一種判斷的是單一動作,第二種判斷的是一串動作之間的關係。判斷對象一旦變成整條執行路徑,執行環境就不能只看每個動作個別是否被允許,還必須知道哪些動作可以接在一起、哪些狀態可以轉換,以及目前的執行狀態是否允許下一步發生。

例如一個訂單流程可能被描述成:

等待付款 → 付款完成 → 要求出貨 → 已完成

如果目前狀態是「等待付款」,Agent 卻直接從「等待付款」進入「要求出貨」,即使「要求出貨」這個工具本身具有有效權限,整條執行路徑仍然可能不符合流程。執行環境在這裡問的已經不只是「這個工具能不能用」,還包括「這個工具現在能不能出現在這個位置」。而執行環境一旦開始判斷狀態與轉換,就必須先定義什麼樣的狀態轉換可以接受,這正是 legitimacy_reference 真正碰到的問題。


執行環境要根據什麼參照標準判斷執行路徑?

「符合要求」本身沒有明確意義,執行環境必須先取得一份參照標準,再把實際執行路徑拿來和這份標準比較。而參照標準可以有很多種。

1. 政策標準:執行路徑有沒有違反明確規則?

最直接的方式,是讓執行環境根據已經定義好的政策判斷,例如:

  • Agent 不得讀取使用者沒有授權的資料。
  • Agent 不得將內部資料傳送到外部服務。
  • Agent 不得使用管理員權限執行一般任務。
  • 某項工具只能在特定狀態下使用。

這種方法的優點是規則明確,判斷結果通常也具有可解釋性。但政策只能判斷「規則有沒有被違反」,如果某種攻擊沒有直接違反任何單一規則,執行環境仍然可能放行。例如:

查詢公開資料
→ 讀取內部文件
→ 將兩份資料合併
→ 呼叫外部分析工具

假設每個動作都符合既有政策,政策檢查可能全部通過,但這串動作組合起來,仍然可能形成一條不應該出現的資料流。因此「符合政策」只能代表執行路徑符合目前已經寫下來的規則,不能直接代表執行路徑安全。

2. 流程模型:執行路徑有沒有偏離允許的流程?

第二種參照不是逐條檢查政策,而是先定義允許的執行流程,例如:

建立訂單 → 付款 → 確認付款 → 出貨

執行環境可以要求 Agent 按照這個流程推進。如果 Agent 在「建立訂單」之後直接要求「出貨」,即使 Agent 擁有出貨工具的使用權限,執行環境仍然可以拒絕這次動作,因為目前狀態沒有允許這個狀態轉換。這類問題與 security automata、conformance checking 所處理的概念相近:系統可以根據預先定義的狀態或流程模型,判斷實際執行軌跡是否符合允許的行為。

比起單純的權限檢查,這種方法更能處理「順序」問題,但流程模型本身可能不完整。如果實際任務存在一條合理、卻沒有事先被寫進流程模型的路徑,執行環境可能把這條路徑當成異常。所以「符合流程」代表的是「符合這份流程模型」,而不是「一定安全」。

3. 歷史行為:執行路徑有沒有偏離過去的行為模式?

第三種方式是使用歷史執行資料建立參照。假設一個客服 Agent 過去處理退款時,大多遵循:

查詢訂單 → 確認付款狀態 → 檢查退款條件 → 執行退款

如果某次執行突然變成:

查詢訂單 → 讀取大量客戶資料 → 建立外部檔案 → 傳送到第三方服務

即使這些動作個別沒有違反政策,執行環境仍然可以發現這條路徑明顯偏離過去的行為模式。這比較接近異常偵測,問題也很明顯:過去出現過的行為,不代表那些行為就是安全的。 如果歷史資料中本身存在錯誤、濫用或攻擊行為,系統學到的「正常」就可能把錯誤行為當成正常行為;反過來說,一條從未出現過的新路徑,也不一定代表攻擊。因此歷史行為比較適合作為偏離程度的參照,而不能直接當成安全標準。

4. 任務目的:執行路徑上的動作是否仍然服務目前的任務?

最後一種參照,是從目前任務本身推導出預期的執行方向。例如使用者要求:

「整理這份報告,最後輸出摘要。」

Agent 可以讀取文件、整理內容、產生摘要。但如果執行過程逐漸變成:

讀取報告 → 搜尋其他帳戶 → 下載附件 → 建立外部連線 → 上傳資料

即使其中部分動作具有權限,這條執行路徑仍然已經偏離原本的任務目的,執行環境因此可以檢查後續動作是否仍然服務目前任務。政策與流程模型沒有明確描述的情況,這種方法能夠處理,代價則是任務本身可能沒有被正確理解,Agent 建立的計畫也可能從一開始就錯了。所以「符合任務目的」仍然是一種參照,不是安全性的同義詞。


參照標準

把四種方法放在一起,可以看出它們判斷的對象並不相同。

參照標準 執行環境實際判斷的問題 主要用途 主要限制
政策標準 執行路徑有沒有違反明確規則? 政策強制 無法涵蓋沒有寫進政策的攻擊組合
流程模型 執行路徑有沒有偏離允許的流程? 流程控制 模型可能遺漏合理的新路徑
歷史行為 執行路徑有沒有偏離過去的行為模式? 異常偵測 過去行為本身可能不安全
任務目的 執行路徑是否仍然服務目前任務? 任務一致性檢查 任務或計畫本身可能錯誤

所以 legitimacy_reference 並不是單純在授權資料裡增加一個欄位而已。執行環境一旦真的使用這個欄位,就必須回答至少四個問題:

參照內容:什麼標準可以用來判斷?
參照來源:這份標準是誰建立的?
適用範圍:這份標準適用哪些任務與執行流程?
信任基礎:執行環境為什麼相信這份標準?

如果這四個問題沒有處理,legitimacy_reference 只是換了一個名稱的「判斷依據」。


符合參照標準,只能代表執行路徑符合這份標準

看過前面四種參照之後,另一個問題會跟著出現:如果執行路徑符合其中一種參照,執行環境能不能直接把這條路徑視為安全?

答案不能直接這樣推論。政策標準只能告訴執行環境「這條路徑有沒有違反已經定義的規則」;流程模型只能告訴執行環境「這條路徑有沒有按照指定流程執行」;歷史行為只能告訴執行環境「這條路徑和過去的行為有多大差異」;任務目的則只能告訴執行環境「這些動作是否仍然和目前任務有關」。這些判斷結果的意義都不一樣。例如一條執行路徑可能完全符合歷史行為,但歷史行為本身就包含不安全的操作;另一條執行路徑可能偏離既有流程,卻是完成新型任務時必要的新路徑。

所以 Day 14 目前能得到的結論比較精確:

參照標準可以定義「符合什麼」,但不能單靠參照標準本身證明「一定安全」。

這個區分對後面的動態權限控制很重要。當執行環境發現一條路徑偏離參照時,後續要不要縮減權限,必須另外定義判斷結果和授權決策之間的關係。


不同參照標準產生衝突時,執行環境應該採用哪個判斷結果?

實際系統很可能同時使用多種參照,例如某次 Agent 執行可能得到:

政策標準 → 符合
流程模型 → 不符合
歷史行為 → 符合
任務目的 → 不符合

這時候不能只說「多判斷幾次」,因為四個參照對同一條執行路徑產生了不同結果。如果政策判斷允許,但流程模型判斷拒絕,執行環境到底要不要放行?如果歷史行為認為這是正常路徑,但任務目的認為這個動作已經偏離任務,哪一個判斷應該優先?

這裡缺少的不是另一個參照標準,而是參照之間的衝突處理規則。例如系統可以明確定義:

政策禁止 → 一律拒絕
流程偏離 → 視風險重新授權
歷史偏離 → 記錄並提高風險分數
任務偏離 → 要求重新確認任務目的

這只是其中一種設計,重點在於執行環境必須知道不同判斷結果之間的優先順序,以及每種結果會如何影響後續執行。否則多個參照同時存在,只會讓授權結果變得更難預測。


執行環境判斷出偏離之後,下一步該怎麼處理?

前面處理的是「怎麼判斷」,但執行環境得到判斷結果之後,還有另一個問題:這個結果要不要直接影響 Agent 的下一個動作?

最直接的做法是阻擋。如果執行環境發現下一個工具呼叫會讓執行路徑偏離參照,執行環境可以直接拒絕這次工具呼叫。這種處理會立即影響 Agent 的控制流程,Agent 收到拒絕結果後,也可能重新規劃後續動作。另一種做法則是先記錄:執行環境可以把偏離事件、目前路徑與判斷結果留下來,暫時不阻止工具呼叫,保留更多執行彈性,但也代表部分動作可能在判斷結果產生後繼續執行。

因此,路徑判斷與控制決策應該分開看。Day 14 先處理的是前者:執行環境要有明確的參照,才能知道一條執行路徑偏離了什麼。至於偏離之後是否要拒絕、縮減權限或允許執行,則是下一層的控制問題。這也讓 legitimacy_reference 從一個看似單純的欄位,變成了後續動態授權設計必須處理的核心依賴。


小結

Day 13 讓我開始注意到,授權資料裡多放一個 legitimacy_reference,並沒有真正解決「這條路徑能不能接受」的問題。執行環境如果要判斷整條執行路徑,就必須先決定自己拿哪一種參照來判斷。政策、流程、歷史行為和任務目的都可以成為參照,但每一種參照回答的問題不同,符合參照也不能直接等同於安全。

這讓我看到後面的動態權限控制還有一個更實際的問題:執行環境發現路徑偏離之後,到底應該怎麼改變 Agent 接下來能做的事情?而在回答這個問題之前,還得先確認執行環境使用的參照本身是否值得信任。

感謝大家今日份的閱讀。

source:

  • Park, J. S., & Sandhu, R. (2004). The UCONABC usage control model. ACM Transactions on Information and System Security, 7(1), 128–174.
  • NIST. (2019). Guide to Attribute Based Access Control (ABAC) Definition and Considerations. NIST Special Publication 800-162.
  • Schneider, F. B. (2000). Enforceable security policies. ACM Transactions on Information and System Security, 3(1), 30–50.
  • van der Aalst, W. M. P. (2016). Process Mining: Data Science in Action. Springer.

上一篇
Day 13|在 Agent 執行期間,它是怎麼去確認授權依據的?
下一篇
Day 15|如果正常行為是學出來的,判斷標準本身也可能被污染
系列文
合法呼叫湊出的攻擊鏈:AI Agent 防禦的 30 天觀念養成16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言