Lab-confirmed:本文 reference 實作來自我(Maki)自家在跑的個人 PKI(mk-brain / ERIKA Bot / Inbox Bot 等),不是 enterprise production case study。Code snippet 為 reference 設計,非實際在跑的版本。
AI 最危險的時刻,是它開始替你動手
很多團隊談 agent 風險,還停在模型會不會講錯話。
但真正把事故等級往上推的,通常不是 output quality。
而是權限。
一個模型如果只能聊天,最多是答錯。
一個模型如果能拿著你的 token 讀 email、寫 repo、發訊息、碰內部論壇,再自己決定下一步,它就不再只是模型。
它是帶著你身份行動的流程執行者。
Anthropic 官方 Git MCP server 的 CVE 之所以讓 builder 震動,不只是因為它是 prompt injection。
而是因為 injection 一旦命中,模型就直接跨過讀寫邊界,替攻擊者覆寫或刪除檔案。
Meta AI Agent 的 Sev1 事故也一樣。
真正被廣傳的 retro 不是「模型太笨」。
而是「人太信 AI 建議」。
這句話翻成工程語言,就是:你把太多決策權和太多執行權綁在同一個 agent 身上。
多數 builder 其實很熟 scope、RBAC、least privilege 這些概念。
只是到了 agent world,很容易被「它現在很會用工具」這件事麻痺。
權限邊界不是把 AI 當成傳統 user 重新做一次 IAM。
它更像是在問:
這個 agent 到底能看到什麼、能碰什麼、能不能自己決定做什麼?
只要三個答案同時太寬,你不是在自動化工作,而是在放大失誤半徑。
Privilege Boundary:它到底能做多少事
權限邊界的重點,不是列出所有 token,而是阻止同一個 agent 同時湊齊最危險的能力組合。
Case:
主:Anthropic 官方 Git MCP server CVE-2025-53110 / CVE-2025-53109(Red Hat 2026-02 深度分析)。Server 給 LLM 「讀寫 repo」權限,prompt injection 一中,LLM 直接幫攻擊者覆寫 / 刪除檔案繞過路徑限制。Anthropic 自家官方實作都中招,反映 Lethal Trifecta(tools + data + autonomy)在 builder 層的隱性風險。
次:Meta AI Agent 多起 Sev1 事故(2026 Q1,繁中工程社群轉發討論)——AI 自己去內部論壇發文做資料分析,敏感資訊外洩。內部 retro 結論被廣傳:「不是 AI 太笨,是人太信 AI 建議。」
核心問題:你的 agent 同時擁有「敏感資料 access」+「外部執行 channel」+「自主決定權」嗎?
Rule:Simon Willison 把這種組合命名為 Lethal Trifecta——這三件事不能同時給同一個 agent。三選二。中文我建議叫「致命三叉」,方便 zh-TW 圈引用。
比起問「這個 agent 很不聰明怎麼辦」,更務實的是先問「它如果被騙,最遠能走到哪裡」。
| Threat | Mitigation | Validated in (reference) |
|---|---|---|
| Lethal Trifecta(tools + sensitive data + autonomy 三者俱全) | 任何 agent permission 設計時砍其中一項;通常砍 autonomy(加 human approval gate) | ERIKA Bot(讀 email 但不可主動發信,發信前 approval) |
| Excessive Agency(LLM06) | per-agent RBAC:code-review agent 唯讀 repo;publish agent 無 DB;social-media agent 無 secret | mk-brain agent council |
| Privilege escalation via scope creep(MCP02) | MCP server 設 scope token 短 TTL;token 換發時降權重新授權 | memory-hall API |
Reference 實作(示意非 production code,依你環境調整):
# Lethal Trifecta gate — tools + sensitive data + autonomy 三選二
from pydantic import BaseModel
class AgentPolicy(BaseModel):
has_tools: bool # 能呼叫外部工具
has_sensitive_data: bool # 能讀 PII / credential / 私訊
has_autonomy: bool # 自主決策不需人類 approval
def is_lethal_trifecta(self) -> bool:
return self.has_tools and self.has_sensitive_data and self.has_autonomy
def assert_safe_agent_config(policy: AgentPolicy):
if policy.is_lethal_trifecta():
raise PermissionError(
"Lethal trifecta detected. 必須砍其中一項——"
"通常加 human approval gate 砍 autonomy。"
)
# 範例:能讀 email 又能寫信的 agent,砍 autonomy 加 approval
agent_policy = AgentPolicy(
has_tools=True,
has_sensitive_data=True,
has_autonomy=False, # 寫信前必須人類 approve
)
assert_safe_agent_config(agent_policy)
對應 OWASP:這篇先看哪幾條
LLM06:2025 Excessive Agency:當 agent 可以自己做太多事,任何前面的判斷失誤都會轉成真實動作。ASI03 Identity and Privilege Abuse:agent 一旦以你的身份操作外部系統,風險本質就從內容生成轉成身分濫用。MCP02 Privilege Escalation:scope creep 與過寬 token 是 builder 最常在工具層放大的洞。
想動手做? 這篇文的概念有對應的 5 課完整課程: 權限邊界 101 →
也可以接著看下一個邊界:脈絡邊界