安全
Agent NAS 不阻止提示詞注入,它限制注入之後的後果:用窄域租約限定一次執行能碰什麼,用分支讓錯誤可撤銷,用 Rule of Two 阻止讀過不可信內容的工作階段再同時擁有敏感資料與對外通道,並留下可追溯的記錄。
範圍與信任假設
- 我們保護: NAS 裡的資料與歷史;授權的邊界;記錄的完整性;記憶的可追溯性。
- 我們不保護: 智能體在 NAS 之外的行為;執行計算本身的隔離(那是沙箱的工作);模型提供商那一側發生的事。
- 信任假設: 可信計算基(TCB)是 NAS 閘道器、策略引擎與記錄服務;主機沒有被攻陷;沙箱負責隔離計算。TCB 被攻陷,本頁的保證就失效。
Rule of Two:工作階段不變數
三個性質:[A] 工作階段讀過不可信內容,[B] 租約允許讀敏感資料,[C] 租約允許改變受保護的狀態或對外通訊。同一工作階段裡三者同時成立時,觸發 C 的那次呼叫不會被自動放行。
| 場景 | A | B | C | 結果 |
|---|---|---|---|---|
| 總結一個網頁,寫成分支裡的筆記 | 是 | 是 | 否(只寫分支) | 自動:分支內的寫入不算 C。 |
讀過網頁之後,向 main 提議合併 | 是 | 是 | 是 | Human Gate。 |
| 只讀公開資料,寫臨時區 | 是 | 否 | 否 | 自動。 |
| 讀過外部郵件之後發出郵件(出口) | 是 | 是 | 是 | 閘門;涉及 secret 則拒絕。 |
這是 Meta 的 Agents Rule of Two 在儲存邊界上的實作。Meta 自己強調,它是減輕風險的啟發式,不是終點,也不替代最小權限;我們的用法也是如此。機制見 Trust Labels。
威脅模型
| 威脅 | NAS 能強制的 | NAS 做不到的 | 殘餘風險 |
|---|---|---|---|
| T1 間接提示注入(經檔案、網頁、郵件) | Rule of Two;租約限定;分支;閘門。 | 阻止注入發生;阻止注入之後在租約內的惡意行為。 | 租約之內的誤用。 |
| T2 憑據洩露(智能體讀到長期金鑰) | 長期憑據不在執行手裡;金鑰掃描器標記 secret;短 TTL。 | 防止智能體把租約內的資料發往已授權的出口。 | 租約內的資料外發。 |
| T3 過寬權限與誤操作 | 窄域租約;分支;軟刪除;快照不在任何租約之內。 | 撤銷外部副作用。 | NAS 之外的後果。 |
| T4 記憶投毒(含跨角色傳播) | 來源與污點;隔離區;已審閱才自動載入;回滾。 | 識別「看起來合理」的錯誤事實。 | 被審閱者放過的投毒。 |
| T5 租約被竊取或重放 | 短 TTL;可撤銷;可選的持有者綁定(DPoP、mTLS)。 | 阻止 TTL 內的濫用。 | TTL 視窗。 |
| T6 審批疲勞與橡皮圖章 | 閘門稀少;NAS 渲染差異;批准綁定摘要;監控批准率。 | 讓人認真看。 | 人為失誤。 |
| T7 日誌篡改 | 雜湊鏈;可選的外部錨定。 | 沒有錨定時,防止 root 毀掉日誌。 | 惡意的管理員。 |
| T8 資料外洩(出口、共享、搜尋結果) | 出口需要租約動作與閘門;secret 禁止出口;派生物繼承標籤。 | 防止人批准之後的洩露;隱蔽通道。 | 批准後的洩露。 |
| T9 供應鏈(技能、MCP 伺服器、外掛、模型) | 技能與外部 MCP 的內容視為 external;技能目錄可以固定到某個提交;執行環境清單寫入記錄。 | 保證第三方程式碼無害。 | 被固定下來的惡意版本。 |
| T10 資源耗盡(分支炸彈、預算耗盡、迴圈讀取) | 配額;TTL;預算;熔斷。 | 區分合法的大任務與失控。 | 區域性的拒絕服務。 |
控制措施
- 策略引擎: 確定性(Cedar 或 Rego 風格),預設拒絕,拒絕時給出可讀的原因與命中的規則;不呼叫 LLM。
- 憑據代理: 長期金鑰只在代理手裡;僅在獲批的出口動作裡為執行鑄造短時的下游權杖。
- 隔離與金鑰: 每個角色一個 Home 與路徑空間;
sensitive保留類使用單獨的金鑰域。 - 供應鏈: 技能、MCP 伺服器與外掛的內容視為
external;執行開始時,把使用的技能與版本寫入記錄。
坦誠的侷限
- 這不是提示詞注入的防禦。它限制後果,並讓後果可見。
- 租約之內的合法權限仍可能被誤用。
- 對 NAS 之外的副作用無能為力:已經發出的郵件、已經呼叫的介面。
- 隱蔽通道與側通道不在範圍內。
- TCB 被攻陷,則保證失效。
- 人會犯錯:閘門降低但不能消除這種風險。
- 污點是保守的,會帶來摩擦與誤報;需要調參,也需要可見的拒絕原因。
- 加密粉碎只保護我們能控制的副本。
事件應對
- 熔斷:
revoke_run與revoke_role立即撤銷租約並凍結分支。 - 回滾: 把受影響的樹恢復到某個提交。
- 溯源: 用讀清單和記錄鏈找出「這次執行讀過什麼、寫過什麼、影響了哪些筆記」。
- 清理: 用 Cascade Forget 刪除受影響的派生物,並出具報告。
可觀測性與稽核
- 三類資料: 記錄(事件)、讀清單(輸入集合)、指標與 trace。
- **
explain(commit):** 返回這個提交由哪次執行、哪張租約產生,經過了哪些閘門,讀過什麼,以及依賴的輸入。 - 與現有觀測棧整合: 一次執行對應一個 OpenTelemetry GenAI span,租約與閘門以事件的形式掛在上面;記錄可以匯出為 JSON Lines,或接入 SIEM。
- 指標: 租約發放與拒絕率;閘門佇列長度、批准率與批准耗時;分支數量與年齡;索引新鮮度;預算消耗;記錄鏈校驗結果。
- 隱私與保留: 預設只記後設資料,不記內容;記錄的保留與內容的刪除各自獨立;讀取記錄本身也需要租約。
引用本頁
為讀者、搜尋引擎和智能體提供穩定的網址與建議的引用格式。
- Markdown 版本
- https://agentnas.com/zh-tw/security/index.md
- 建議引用格式
- Agent NAS project. “安全.” agentnas.com, 2026-11-11. https://agentnas.com/zh-tw/security/