跳到主要內容
邊界實驗室 · Boundary Lab

邊界實驗室 · Article

權限邊界 — 你給 AI 的 token,比你想的更危險

AI agent 真正危險的時刻,常不是回錯一句話,而是拿著你的 token 去讀敏感資料、改檔案、對外動作。這篇從 Anthropic Git MCP CVE 與 Meta AI Agent 事故拆解 privilege boundary、致命三叉與 per-agent RBAC。

2026-04-26Lab-confirmedERIKA Botmk-brainmemory-hall

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 很不聰明怎麼辦」,更務實的是先問「它如果被騙,最遠能走到哪裡」。

ThreatMitigationValidated 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 無 secretmk-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 →

也可以接著看下一個邊界:脈絡邊界