跳到內容

三階段漸進式安全防禦

分層威脅過濾:90% 的攻擊以零成本攔截。


過機場安檢時,不是每個人都受到相同的對待:

  1. 金屬探測門:所有人都要走過。瞬間攔截明顯威脅,零人力投入。
  2. X 光機:行李被掃描,操作員掃一眼螢幕,只有被標記的行李才會二次檢查。
  3. 私人安檢室:只有觸發多重警報的旅客才需要,接受徹底的人工檢查。

DuDuClaw 的安全防禦完全依照此模式運作:三層逐步加重的檢查,絕大多數威脅在到達昂貴層級之前就被攔截。


第一道防線是簡單、快速的模式比對器。已知危險操作被立即阻擋:

傳入的工具呼叫或指令
|
v
比對黑名單模式:
- 破壞性 shell 指令
- 直接存取敏感檔案
- 已知注入模式
|
+--+--+
| |
符合 不符合
| |
v v
阻擋 傳遞到 Layer 2

此層在微秒內執行。沒有網路呼叫、沒有模型調用、沒有模糊地帶。模式符合就阻擋,沒有例外。

黑名單涵蓋最常見的攻擊向量:刪除資料的指令、擷取環境變數的指令、企圖繞過檔案權限的模式。

知道 Layer 1 存在的攻擊者會嘗試繞過,將指令編碼為 Base64、將危險字串分散在多個操作中、或逐步建構有效載荷。

Layer 2 在威脅等級升高(YELLOW 或以上)時啟動:

工具呼叫通過 Layer 1
|
v
目前威脅等級 >= YELLOW?
|
+--+--+
| |
是 否 --> 直接通過(Layer 2 跳過)
|
v
掃描混淆模式:
- Base64 編碼的指令片段
- 異常上下文中的環境變數引用
- 符合已知資料外洩端點的 URL
- 重新組合後形成危險指令的編碼字元
|
+--+--+
| |
發現 乾淨
| |
v v
阻擋 傳遞到 Layer 3(若為 RED)

此層仍然是規則式的(沒有 LLM 呼叫),但規則更精密。它尋找的是繞過意圖而非直接的危險指令。

最昂貴的一層。只在威脅等級 RED(已確認攻擊行為)時啟動:

工具呼叫通過 Layer 1 和 2
|
v
目前威脅等級 == RED?
|
+--+--+
| |
是 否 --> 直接通過
|
v
將上下文送交輕量 LLM:
「根據這一系列工具呼叫及其上下文,
這是合法操作還是攻擊企圖?」
|
+--+--+
| |
攻擊 合法
| |
v v
阻擋 放行

此層攔截在語意上危險但語法上無辜的攻擊。這些事物個別看來正常,但結合起來形成惡意模式。

三層由威脅等級系統協調運作:

GREEN(正常)
|
| 偵測到可疑模式
v
YELLOW(警戒)
|
| 確認攻擊指標
v
RED(實際威脅)
|
| 觀察期內無事件
v
YELLOW --> GREEN(逐步降級)

關鍵行為:

  • 升級迅速:單一確認的攻擊指標立即從 GREEN 跳到 YELLOW。
  • 降級緩慢:系統等待平靜的觀察期才降級。這防止攻擊者觸發封鎖、短暫等待、然後再次嘗試。
  • 層級隨等級啟動:GREEN 時只跑 Layer 1。YELLOW 時跑 Layer 1+2。RED 時三層全開。

一項關鍵設計決策:以上所有功能都不修改 Claude Code 本身

整個安全系統以 .claude/hooks/ 目錄中的 shell 腳本實作。這些 hook 是 Claude Code 提供的標準擴展機制,在特定工具呼叫前後執行,接收工具參數並回傳允許/拒絕決定。

Claude Code 呼叫一個工具
|
v
Hook 系統攔截(PreToolUse)
|
v
安全腳本執行 3 層檢查
|
+--+--+
| |
允許 拒絕
| |
v v
工具 工具呼叫被
執行 阻擋並附帶說明

這代表:

  • DuDuClaw 安全機制適用於任何 Claude Code 版本
  • 不需要 fork、patch 或 monkey-patching
  • 安全層可獨立於 Claude Code 進行更新

除了三層之外,hook 系統還提供針對性保護:

人格檔案保護 — Agent 的身份檔案受到保護,防止未經授權的讀取和寫入。只有演化引擎(在特定環境旗標下運行)才能修改它。

機密掃描器 — 所有檔案寫入都會被掃描,檢查是否包含看起來像 API 金鑰、密碼、token 或其他認證資料的模式。若發現,寫入被阻擋並發出警報。

審計記錄器 — 每次工具呼叫(允許或拒絕)都記錄在 append-only 日誌檔案中。這提供完整的鑑識軌跡供事件調查使用。

設定守衛 — 關鍵設定檔被監控以防未經授權的變更。如果設定檔在核准通道之外被修改,系統會發出警報。

Unicode 正規化 — 所有輸入在處理前都會做 NFKC 正規化,以偵測同形異義字攻擊(例如用看起來像拉丁字母的西里爾字元)。這能防止視覺偽裝式的繞過嘗試。

Action Claim Verifier — 驗證工具執行宣稱上的加密簽章,確保宣稱的工具結果真的來自預期的工具。

RBAC(角色型存取控制) — 一套角色型存取控制矩陣規範每個使用者/Agent 能做什麼。不同角色(admin、operator、viewer)有不同的權限集合,在 API 層強制執行。


將 AI 判讀保留給最罕見的情況(僅限 RED 等級),安全系統在正常操作中增加的成本接近零。大多數威脅被微秒級的 Layer 1 黑名單攔截。

沒有單一層級負責所有安全。繞過 Layer 1(混淆)的攻擊者仍面對 Layer 2(模式分析)。繞過 Layer 2 的攻擊者仍面對 Layer 3(語意 AI 判讀)。

Layer 1 的黑名單故意保守;它只阻擋確定危險的事物。模糊的情況留給更高層級處理,這些層級有更多上下文做出準確判斷。

JSONL 審計日誌意味著每個安全決策都被記錄並可供檢閱。當安全事件發生(或誤報被回報)時,營運人員可以精確重建發生了什麼、什麼被阻擋、以及為什麼。


  • CONTRACT.toml:行為契約定義 Agent 不得做什麼。安全 hook 在工具呼叫層級強制執行如何實施。
  • 演化引擎:安全層保護人格檔案免受未經授權的修改,確保只有 GVU 管線能演化 Agent。
  • 儀表板:威脅等級和近期安全事件可在 Web 介面中查看。
  • 審計系統:與更廣泛的 JSONL 審計紀錄整合,支援合規需求。

安全不一定很貴。透過在昂貴的 AI 判讀之前分層便宜的確定性檢查,DuDuClaw 以接近零的成本攔截絕大多數威脅,同時為真正模糊的情況保留 AI 判讀能力。