前言¶
DeepSeek Harness(簡稱 DSH)是 DeepSeek 開源的智能體運行時,核心理念是「一切皆插件」:模型、工具、會話、沙箱、存儲和界面都可以掛載、替換。倉庫地址是 https://github.com/deepseek-ai/deepseek-harness 。社區裏有一份獨立維護的插件目錄 https://deepseek-harness-plugin.com/zh-CN/plugins/ ,它不是 DeepSeek / 幻方的官方應用商店,收錄條目需要對照 GitHub 再核一遍。
本機 DSH 環境裏通常同時放着 API Key、token、會話內容和插件加載邊界。監聽開到公網、憑據文件權限過寬、插件來源沒固定、會話目錄出現符號鏈接,都會變成真實風險。倉庫 README 把現有工具的缺口寫得很直接:plugin-check 只做結構 / 合規檢查,不評估憑據暴露面和路徑逃逸;session-health 只做健康診斷,不裁定來源可信度;手工逐項排查則分散在配置、權限、端口和插件來源多處,不可復現,也難留檔。
dsh-security-audit 針對的就是這個視角:對本機 DSH 環境做防禦性、只讀的安全審計,輸出脫敏、可復現、可定位的風險報告。它不自動修復、不連接遠程、不執行被審計插件,也不把「沒讀到」當成「安全」。
本文按社區目錄頁、GitHub README、package.json、src/index.ts 與 src/rules.ts 覈對後整理。目錄頁最近推送時間爲 2026-08-14,收錄日期 2026-08-10。GitHub API 在 2026-08-17 顯示 12 star;目錄頁當時仍寫 11 star,星標以倉庫一手數據爲準。
這是什麼¶
dsh-security-audit 是一款 DeepSeek Harness 的「工具與能力」插件,由 omdsh-dev 維護,倉庫爲 https://github.com/omdsh-dev/dsh-security-audit ,許可證 MIT(LICENSE 版權聲明爲 2026 whiteicey)。主要語言 TypeScript。package.json 中的版本爲 0.0.1,包名是 @deepseek-ai/dsh-security-audit,並標了 "private": true,因此安裝入口是 GitHub 倉庫,不是公開 npm 包。這個 scoped 名稱只是包內標識,維護者仍是 omdsh-dev,不要把它理解成 DeepSeek 官方插件。
它註冊工具 security_audit(profile 中的 row id 爲 security-audit),統一輸出 JSON 文本。掃描類動作帶 verdict / riskVerdict / coverageVerdict 與 summary。README 寫明已遷移到 npm 依賴線,並在隔離的 @deepseek-ai/dsh@0.1.0-rc.6 consumer 中做過全鏈路驗證。package.json 要求 Node ^22.19.0 || >=24.0.0,peer 依賴爲 @deepseek-ai/cordis@^4.0.1、@deepseek-ai/dsh-tools 與 @deepseek-ai/dsh-invariants(後兩者版本範圍爲 >=0.0.1-rc.1 <0.2.0)。
核心功能¶
插件把本機審計拆成四個掃描面,再用 report 彙總,用 rules 列出規則目錄。六個 action 如下。
| action | 作用 |
|---|---|
scan_config |
看 DSH 配置、profile、env / credentials 元數據:祕密是否存在、文件權限、外部端點 |
scan_plugins |
看已安裝插件的來源、路徑、patch、危險靜態能力、install script、祕密文件 |
scan_sessions |
看會話目錄權限、symlink 逃逸、zstd 幀結構(在解壓炸彈預算內) |
scan_network |
看監聽配置、URL 分類、明文 HTTP、代理路由;不主動聯網 |
report |
彙總四類掃描,給出 riskVerdict 與 coverageVerdict 雙維度 |
rules |
列出規則 code / severity / critical / 適用平臺 |
src/rules.ts 裏的規則是靜態目錄,不是運行時猜測。配置側包括 secret-in-settings(非 credentials 文件出現疑似 token / key / 私鑰)、credential-file-permissions、inline-private-key(私鑰 PEM 或高置信祕密,severity 爲 critical)、profile-path-outside-root。插件側包括 plugin-unpinned-git(Git 來源未固定 commit)、plugin-path-outside-root、install-script、secret-like-file,以及源碼靜態能力類的 dynamic-code-execution / process-execution-capability / network-capability。會話側包括 session-symlink、session-suspicious-expansion。網絡側包括 listen-all-interfaces(監聽 0.0.0.0 / :: 且無認證證據)、plaintext-http-external、unknown-listener-state(無法確定實際綁定狀態,明確標爲 info,不當成 pass)。
README 把審計器自身的邊界寫進了安全模型,這幾條決定它能信到什麼程度:
- 只讀:不修改、不刪除任何文件,不執行被審計插件的代碼,不主動連接遠程目標。
scan_network只解析配置並分類 URL,從不探測。 - 祕密脫敏:疑似祕密只返回類型、長度、進程內隨機 HMAC fingerprint、路徑和行號。完整值不進入 canonical 輸出;這是協議保證,不是截斷。字段
redacted: true表示走了脫敏協議。 - 路徑圍欄:路徑經過 lstat(拒絕 symlink)→ realpath → containment 三重檢查。
root固定爲進程啓動時解析的$DSH_HOME,或管理員在插件配置裏聲明的allowedRoots。模型參數不能擴大讀取範圍。 - 誠實判定:finding / pass /
skipped/error四態。skipped(平臺不支持或無權限)和error不計爲 pass,coverage 降爲incomplete。源碼靜態掃到的capabilityfinding 只提示人工確認,不裁定惡意。 - 預算:文件 ≤ 200、插件 ≤ 200、會話 ≤ 1,000、findings ≤ 1,000;源碼單文件 ≤ 1 MiB(累計 ≤ 64 MiB);canonical 輸出 ≤ 2 MiB;單 action 10 秒、
report30 秒。超限後置truncated。會話 zstd 掃描按幀預算截斷,不整包解壓。 - 可復現:輸出無時間戳、路徑穩定排序。工具參數會記入會話日誌,不要把敏感數據傳進參數。
includeSourceScan 默認 false。打開後會對插件源碼做靜態能力掃描,更慢,誤報也更多。strict 默認 false;打開後 medium finding 也判 fail。detail 默認 true,敏感證據始終脫敏。
README 給出的輸出信封如下(示例,不是某次真實掃描結果):
{"tool":"security_audit","version":1,"root":"$DSH_HOME","platform":"win32","strict":false,
"verdict":"fail","riskVerdict":"fail","coverageVerdict":"complete",
"summary":{"critical":0,"high":1,"medium":0,"low":0},
"findings":[{"code":"secret-in-settings","severity":"high","state":"finding",
"evidence":{"path":"$DSH_HOME/.env","line":13,"secretKind":"api-key","secretLength":35,
"fingerprint":"b99e1887d861d7be","redacted":true}}],
"truncated":false}
安裝與啓用¶
社區目錄頁給出的安裝命令如下,在 DeepSeek Harness 終端中運行即可:
dsh plugin add github:omdsh-dev/dsh-security-audit
如需可復現安裝,目錄頁建議固定 commit 哈希:
dsh plugin add github:omdsh-dev/dsh-security-audit#<commit>
倉庫 README 針對 DSH 0.1.0-rc.6 補充了 profile 寫法。web 與 headless 是不同 profile:裝到 web 不會自動覆蓋 headless;dsh run 默認使用 headless。
# 交互式(web)profile
dsh plugin --profile web add github:omdsh-dev/dsh-security-audit
# 一次性任務(headless)profile
dsh plugin --profile headless add github:omdsh-dev/dsh-security-audit
包內 dsh.bundle.patch(cordis.patch.yml)會在安裝後把插件插入 profile 的 layer stack,row id 爲 security-audit。缺失的 peer 依賴由 profile 的 profiles/node_modules 回退安裝提供。Windows 路徑使用正斜槓。
驗證安裝:
dsh --profile web --dump-config | grep security-audit
README 還提到可用 npm pack 產物作爲 source 安裝,以及本地路徑的舊場景(monorepo / junction / 手動改 profile 層)。日常使用優先 GitHub source。
插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。安裝前請檢查源代碼倉庫和許可證。
典型用法¶
安裝後,倉庫給出的運行驗證方式是讓 Agent 調用 report:
dsh run "運行 security_audit 的 report 動作,檢查本機 DSH 環境安全風險"
也可以按面分開跑,例如只看配置或只看插件來源。工具參數如下。
| 參數 | 類型 | 必填 | 說明 |
|---|---|---|---|
action |
string | 是 | scan_config / scan_plugins / scan_sessions / scan_network / report / rules |
root |
string | 否 | 必須等於 $DSH_HOME 或管理員聲明的 allowedRoot |
profile |
string | 否 | 限定單個 profile,格式 ^[A-Za-z0-9._-]{1,64}$,不接受路徑 |
strict |
boolean | 否 | medium finding 也判 fail;默認 false |
detail |
boolean | 否 | 詳細輸出;默認 true |
includeSourceScan |
boolean | 否 | 啓用插件靜態源碼能力掃描;默認 false |
源碼裏插件配置還有兩項管理員聲明項:allowedRoots(額外允許作爲 root 掃描的絕對路徑)和 allowedEndpoints(endpoint allowlist,規範化 scheme+host+port 精確匹配,無通配符)。模型參數不能改這兩項來擴大範圍。
README 寫構建與測試依賴 TypeScript / vitest,測試覆蓋 redact、paths、config、plugins、sessions、network、permissions、report、register,共 112 個用例。這是倉庫自述,不是第三方評測。
適用場景與注意事項¶
適合已經在本機跑 DSH、裝了若干第三方插件、需要把配置 / 憑據權限 / 插件來源 / 會話目錄 / 監聽面做成可留檔報告的人。CI 或發佈前用 report 看 riskVerdict 與 coverageVerdict,比口頭說「檢查過了」更可復現。plugin-unpinned-git 這類規則也適合用來提醒:社區插件儘量固定 commit。
使用時注意下面幾條,都來自倉庫自己的邊界說明,不是額外發揮:
- 這是診斷工具,不自動改文件、不替你卸載插件、不替你收緊權限。
coverageVerdict爲incomplete時,表示有skipped或error,不能把沒掃到的部分當成安全。scan_network的監聽狀態是配置級推斷;unknown-listener-state表示不確定實際綁定,不是「沒問題」。- 打開
includeSourceScan後,eval/ 網絡 / 進程類 finding 只是靜態能力提示,需要人看用途,插件不會標「惡意」。 - 工具參數會進會話日誌,不要把真實密鑰當作參數傳入。
- 它審計的是本機
$DSH_HOME視角,不是對整個 DeepSeek Harness 插件模型做攻防評估。GitHub 上另有第三方討論和別的審計倉庫,與本插件不是同一個項目。
小結¶
dsh-security-audit 把本機 DSH 的配置、插件來源、會話結構和網絡暴露面收成一份脫敏 JSON 報告,並把自己的只讀、圍欄和誠實判定寫進契約。安裝命令以社區目錄頁爲準:
dsh plugin add github:omdsh-dev/dsh-security-audit
目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-security-audit/
GitHub:https://github.com/omdsh-dev/dsh-security-audit