前言¶
DSH 可以安裝第三方插件。插件進入 profile 後,可能觸達文件、進程、網絡、環境變量和憑據路徑。dsh-plugin-audit 提供靜態權限畫像和運行時哨兵,幫助管理員在運行第三方插件前判斷它的權限面。
這是什麼¶
dsh-plugin-audit 是 DeepSeek Harness 的安全審計插件,由 jkrandom-sudo 維護,許可證爲 MIT,當前版本爲 0.1.4。它做兩件事:用 plugin_audit 靜態掃描第三方插件,並在運行時對高風險工具調用請求審批。
核心功能¶
下面先介紹靜態畫像,再介紹運行時哨兵。
靜態權限畫像¶
plugin_audit 掃描一個插件目錄。它會查看插件源碼目錄、package.json 和 cordis.patch.yml,然後返回一張權限畫像卡片,並附文件與行號證據。
靜態掃描器會報告它發現的每一個網絡面。它不根據 allowedHosts 做白名單過濾,也不做最終風險裁決;報告是給人工複覈用的證據。
運行時哨兵¶
dsh-plugin-audit 監聽 DSH 的 tools/pre-execute 事件。當一次待執行工具調用命中以下規則時,哨兵會請求審批:
1、工具參數引用了憑據路徑;
2、工具調用外發數據,目標主機不在 allowedHosts 中;
3、寫工具目標是 home 目錄下的 dotfile。
如果沒有可用審批通道,插件會拒絕該工具調用,而不是靜默放行。
哨兵只檢查工具調用名稱和參數,不讀取文件、環境變量,也不檢查調用參數之外的會話內容。
只讀約束¶
掃描器按約定只讀。每一份報告都攜帶 writesPerformed: false。可選的 invariant companion 可以強制這個標記。
掃描器的掃描邊界如下:
- 最多 400 個文件,單文件上限 256 KB;
- 跳過
node_modules、.git、lib、dist; - 不跟隨符號鏈接目標;
- 基於源碼文本,而不是 AST,因此字符串和註釋也可能被報告;
- 只包含構建產物的包至少會得到
NOTICE級別; - 插件不發起網絡調用,也沒有遙測;報告中的主機是從被掃描文本中提取的,不會被訪問。
安裝與啓用¶
先安裝到 web profile:
dsh plugin --profile web add dsh-plugin-audit
經過上面的步驟後,在已安裝該插件的 profile 中使用 plugin_audit。
移除插件:
dsh plugin --profile web remove dsh-plugin-audit
典型用法¶
在會話中可以使用這樣的示例:
Audit the plugin at ~/some-third-party-plugin with plugin_audit
也可以直接調用工具:
{
"path": "/absolute/path/to/plugin",
"format": "markdown"
}
這裏 path 指向要審計的插件目錄,format 爲 markdown。
配置¶
哨兵和允許主機通過 profile 的 cordis.patch.yml 配置:
sentinelEnabled: true
allowedHosts:
- example.com
- api.example.com
sentinelEnabled 控制運行時哨兵是否啓用;allowedHosts 配置允許的外發主機。靜態掃描器不受 allowedHosts 影響。
兼容性¶
| 項 | 要求 |
|---|---|
| DSH mainline | verified against 2026-08-14 snapshot |
| Node.js | ^22.19.0 || >=24.0.0 |
| Cordis | ^4.0.0-rc.7(peer dependency) |
適用場景與注意¶
適合在以下場景使用:
- 安裝 DSH 第三方插件前,先查看它的權限畫像;
- 在運行時攔截引用憑據路徑、訪問未知主機或寫入 home dotfile 的工具調用;
- 爲不同 profile 配置不同的
allowedHosts。
注意:DSH 插件以當前 DSH 進程權限運行。安裝前應檢查源碼、許可證和配置項。審計卡片是證據,不等於安全結論;對敏感插件,應人工複覈文件、網絡、進程和憑據相關發現。
鏈接¶
GitHub 倉庫:https://github.com/jkrandom-sudo/dsh-plugin-audit
目錄頁:https://www.skillhub.cn/plugins/jkrandom-sudo/dsh-plugin-audit