用 dsh-security-audit 給本機 DeepSeek Harness 做只讀安全審計

前言

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.jsonsrc/index.tssrc/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 / coverageVerdictsummary。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 彙總四類掃描,給出 riskVerdictcoverageVerdict 雙維度
rules 列出規則 code / severity / critical / 適用平臺

src/rules.ts 裏的規則是靜態目錄,不是運行時猜測。配置側包括 secret-in-settings(非 credentials 文件出現疑似 token / key / 私鑰)、credential-file-permissionsinline-private-key(私鑰 PEM 或高置信祕密,severity 爲 critical)、profile-path-outside-root。插件側包括 plugin-unpinned-git(Git 來源未固定 commit)、plugin-path-outside-rootinstall-scriptsecret-like-file,以及源碼靜態能力類的 dynamic-code-execution / process-execution-capability / network-capability。會話側包括 session-symlinksession-suspicious-expansion。網絡側包括 listen-all-interfaces(監聽 0.0.0.0 / :: 且無認證證據)、plaintext-http-externalunknown-listener-state(無法確定實際綁定狀態,明確標爲 info,不當成 pass)。

README 把審計器自身的邊界寫進了安全模型,這幾條決定它能信到什麼程度:

  1. 只讀:不修改、不刪除任何文件,不執行被審計插件的代碼,不主動連接遠程目標。scan_network 只解析配置並分類 URL,從不探測。
  2. 祕密脫敏:疑似祕密只返回類型、長度、進程內隨機 HMAC fingerprint、路徑和行號。完整值不進入 canonical 輸出;這是協議保證,不是截斷。字段 redacted: true 表示走了脫敏協議。
  3. 路徑圍欄:路徑經過 lstat(拒絕 symlink)→ realpath → containment 三重檢查。root 固定爲進程啓動時解析的 $DSH_HOME,或管理員在插件配置裏聲明的 allowedRoots。模型參數不能擴大讀取範圍。
  4. 誠實判定:finding / pass / skipped / error 四態。skipped(平臺不支持或無權限)和 error 不計爲 pass,coverage 降爲 incomplete。源碼靜態掃到的 capability finding 只提示人工確認,不裁定惡意。
  5. 預算:文件 ≤ 200、插件 ≤ 200、會話 ≤ 1,000、findings ≤ 1,000;源碼單文件 ≤ 1 MiB(累計 ≤ 64 MiB);canonical 輸出 ≤ 2 MiB;單 action 10 秒、report 30 秒。超限後置 truncated。會話 zstd 掃描按幀預算截斷,不整包解壓。
  6. 可復現:輸出無時間戳、路徑穩定排序。工具參數會記入會話日誌,不要把敏感數據傳進參數。

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.patchcordis.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 或發佈前用 reportriskVerdictcoverageVerdict,比口頭說「檢查過了」更可復現。plugin-unpinned-git 這類規則也適合用來提醒:社區插件儘量固定 commit。

使用時注意下面幾條,都來自倉庫自己的邊界說明,不是額外發揮:

  • 這是診斷工具,不自動改文件、不替你卸載插件、不替你收緊權限。
  • coverageVerdictincomplete 時,表示有 skippederror,不能把沒掃到的部分當成安全。
  • 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

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜