前言¶
DeepSeek Harness (DSH) 的核心設計是“一切皆插件”。引入外部插件意味着引入新的代碼和權限,開發者通常只能依賴靜態掃描,但這無法覆蓋運行時動態構造的命令或工具調用。dsh-guardwall 作爲一個安全插件,提供兩層防護:安裝前的源碼體檢和運行時的護欄攔截,並附帶篡改檢測的審計日誌。
功能概覽¶
該插件由 iiiweiii 維護,採用 MIT 許可證。核心能力包括:
* 安裝前體檢:通過真實製品落地、權限清單、靜態風險掃描和信任評分,對插件進行“裝前把關”。
* 運行時攔截:在輸入側攔截破壞性命令、憑據、SSRF 和反向 shell,在輸出側審計密鑰泄露。
* 篡改檢測審計:使用 HMAC 鏈式哈希和尾部 checkpoint,確保日誌不被篡改或截斷。
* 熱加載:無需重啓即可更新規則和閾值。
* 零第三方運行時依賴:僅使用 Node.js 內置模塊。
安裝與啓用¶
通過 CLI 安裝插件。如果 npm 尚未發佈製品,可使用 GitHub 通道。
dsh plugin --profile web add dsh-guardwall
安裝後驗證配置是否掛載:
dsh --profile web --dump-config | grep -A2 'id: guardwall'
第一層:安裝前體檢¶
在安裝插件前,系統會先確認“裝這個插件 = 給了它什麼權限”。默認攔截風險等級 >= 7 的插件。
體檢工具:
npx guardwall check <spec> # 體檢輸出報告
npx guardwall add <spec> [--force] # 體檢通過後執行安裝
<spec> 支持本地路徑、npm 包名或 github:owner/repo。
四步體檢流程:
1. 真實製品落地:通過 --ignore-scripts 安裝 npm 包或檢出 GitHub 精確 ref,獲取源碼後再做判斷。
2. 權限清單:靜態分析插件訪問的文件路徑(如 ~/.ssh)、執行的命令(如 rm、curl)和連接的域名。
3. 靜態風險掃描:檢查依賴樹、危險模式(eval、動態執行)及安裝腳本。
4. 信任評分與門禁:基於五維評分。D 級拒絕(需 --force),C 級警告,A/B 級放行。
第二層:運行時攔截¶
插件在 DSH 的 tools/execute(輸入側)和 tools/result(輸出側)事件中介入。
與依賴 cordis/dsh-tools 的其他安全插件不同,dsh-guardwall 零第三方運行時依賴,減少供應鏈攻擊面。當 Agent 被誘導執行高危操作(如 rm -rf /)時,調用會被攔截並返回錯誤提示。
默認攔截規則(風險 >= 7):
* SEC-001:破壞性刪除/格式化(rm -rf /、format、mkfs)。
* SEC-002:訪問憑據文件(~/.ssh、.aws、.env)。
* SEC-003:參數中出現疑似明文憑據(password=、sk-)。
* SEC-004:SSRF 攻擊(雲元數據端點)。
* SEC-005:反向 shell 或下載執行管道(bash -i、nc -e)。
* SEC-006:命令鏈注入(;rm、&&rm)。
* SEC-007:提權操作(sudo su、chmod 777 /)。
* SEC-008:寫入系統關鍵文件(/etc/passwd、/boot)。
輸出側審計規則:
* OUT-001:密鑰/私鑰泄露(sk-、AKIA、BEGIN PRIVATE KEY)。
* OUT-002:內網 IP 輸出。
* OUT-003:帶口令數據庫連接串。
* OUT-004:環境變量密鑰 dump。
* OUT-005:公鑰/證書/私密材料。
熱加載¶
支持在運行時動態修改規則和閾值,無需重啓 DSH。
熱加載規則:
規則文件位於 ~/.dsh/cache/dsh-guardwall/rules.d/*.json,保存即生效。
[
{ "id": "MY-001", "direction": "input", "risk": 8,
"re": "internal\\.corp\\d+\\.com", "summary": "禁止訪問內網域名", "advice": "確認授權後訪問" }
]
熱配置:
同目錄下的 config.json 可調整閾值:
{ "blockThreshold": 6, "warnThreshold": 3 }
工具命令:
* guard_reload:手動刷新規則與配置。
* guard_rules:查看生效規則。
配置與策略¶
默認策略爲 risk >= 7 攔截、risk >= 4 告警。可在 cordis.patch.yml 的 config 中調整。
- insert:
- id: guardwall
name: dsh-guardwall
config:
blockThreshold: 7
warnThreshold: 4
dataDir: ~/.dsh/cache/dsh-guardwall
failMode: closed # 掃描異常時拒絕執行
allowAgentWhitelist: false # 默認禁止 Agent 自助放行
審計日誌¶
審計日誌依賴 HMAC 鏈式哈希機制,確保日誌完整性。
日誌存儲位置:~/.dsh/cache/dsh-guardwall/
* audit-YYYY-MM-DD.jsonl:每條記錄包含 prevHash 和 HMAC hash。
* checkpoint-YYYY-MM-DD.json:尾部錨點。
* chain.key:鏈密鑰(權限 0600)。
安全機制:
內容修改、併發鏈分叉或尾部截斷會導致 verify() 返回失敗。該機制用於檢測意外損壞和未持有密鑰的修改。
工具列表¶
| 工具 | 用途 |
|---|---|
guard_check |
安裝前體檢(權限/風險/評分/門禁建議) |
guard_status |
攔截/告警/記錄統計、審計鏈完整性、白名單 |
guard_whitelist |
臨時放行某規則(默認關閉,需精確工具名和有效期) |
guard_reload |
手動重載熱加載規則與配置 |
guard_rules |
查看生效規則與熱加載狀態 |
兼容性與路線圖¶
- 兼容性:已驗證
@deepseek-ai/dsh 0.1.0-rc.5(web profile)。 - 路線圖:白名單按 agent/會話隔離、高敏操作二次確認、審計導出/週報、npm 發佈。
結語¶
dsh-guardwall 通過源碼溯源、運行時攔截和鏈式審計,爲 DSH 插件生態提供了從安裝到使用的全流程安全兜底。如果你需要在不犧牲靈活性的前提下加強智能體執行環境的安全性,可參考其配置進行部署。