dsh-plugin-security-review:給 DSH 動態插件安裝加一道靜態安全審查

前言

在 DSH 的插件機制裏,動態插件經常通過 cordis_define 和 cordis_run 安裝或運行。對插件源碼做靜態審查、給出明確判定、保留操作者審批與白名單入口,是處理動態插件時的常見需求。dsh-plugin-security-review 提供這樣一個守衛:它審查動態插件源碼,按安全優先策略處理安裝或運行,並提供 plugin_security_review / plugin_security_audit 兩個工具。

這是什麼

dsh-plugin-security-review 是 ShanHaiFish 維護的 DSH 插件安裝安全審查守衛,許可證爲 MIT。

它的定位是圍繞 cordis_define / cordis_run 的動態插件源碼做靜態安全審查,按 BLOCK / ASK / WARN / ALLOW 處理安裝或運行,並提供審查、審計、審批彈窗和本地白名單能力。靜態 bundle 形態隨 profile 層棧自動加載。

核心功能

  • 對 cordis_define / cordis_run 安裝或運行的動態插件源碼做靜態安全審查。
  • 按 BLOCK / ASK / WARN / ALLOW 判定處理安裝或運行。
  • 提供 plugin_security_review / plugin_security_audit 審查工具。
  • 靜態 bundle 形態隨 profile 層棧自動加載。
  • 支持瀏覽器審批彈窗:同意 / 同意+白名單 / 拒絕。
  • 支持 trusted-local 白名單,按 prefixes / pluginIds / fingerprints 直接放行。
  • 人工批准 ASK 後持久化代碼指紋,並在後續命中相同指紋時自動放行。

安裝與啓用

推薦靜態 bundle 形態:

dsh plugin --profile web add dsh-plugin-security-review

未發佈或離線調試時,可以使用 file: 本地安裝:

dsh plugin --profile web add file:/path/to/dsh-plugin-security-review

重啓 dsh web 後,調用無參數的 plugin_security_audit,應顯示:

守衛: 運行中 (v1.8.1)

典型用法

審批彈窗

靜態 bundle 形態支持瀏覽器審批彈窗,選項爲:

  • 同意
  • 同意+白名單
  • 拒絕

人工批准的 ASK 成功後,會持久化代碼指紋;後續命中相同指紋時自動放行。代碼變更後,原指紋批准失效。

trusted-local 白名單

本地白名單文件位於:

<DSH_HOME>/storages/plugin-security-gate/trusted-local.json

可配置以下字段:

{
  "prefixes": ["<prefix>"],
  "pluginIds": ["<pluginId>"],
  "fingerprints": ["<sha256>"]
}

命中 trusted-local 白名單時,對應 cordis_define / cordis_run 會直接放行。

回退官方審批 UI

如果希望 ASK 回退官方審批 UI,可配置:

<DSH_HOME>/storages/plugin-security-gate/config.json

內容爲:

{"askMode":"seam"}

能力聲明

在 cordis_define 的 purpose 末尾追加能力聲明:

CAPABILITIES: spawn,network,env,fs

動態插件回退形態

動態回退形態用於沒有 bundle 能力的 profile,基本步驟是:

  1. 讀取 package-source.js 與 manifest.json。
  2. 調用 cordis_define。
  3. 調用 cordis_run 激活。
  4. 調用 plugin_security_audit 驗證。

動態回退形態不跨 DSH 進程存續,重啓後需要重新加載;該形態不提供瀏覽器審批彈窗。

適用場景與注意

適合以下場景:

  • 需要在 DSH 中安裝或運行動態插件。
  • 需要對 cordis_define / cordis_run 的插件源碼做靜態審查。
  • 需要保留人工審批、代碼指紋放行和本地白名單入口。

使用注意:

  • 按 DSH 插件安裝機制,插件以當前 dsh 進程權限運行;安裝前應先檢查源碼與許可證。
  • 源碼不可檢索時,行爲爲 fail-closed,即 ask。
  • trusted-local 白名單用於對抗未經操作者確認的高危安裝,不是對抗 agent 自身的安全邊界。
  • 在 full-access 部署中,agent 也能寫 trusted-local 文件。
  • 將守衛自身 id/前綴加入 trusted-local 白名單,會解除守衛自我保護。
  • trusted-local 白名單寫入失敗只記日誌,不影響代碼指紋批准;讀取側仍保持 fail-closed。
  • peerDependencies 要求:
  • @deepseek-ai/dsh-tools:^0.1.1-rc.2
  • @deepseek-ai/dsh-cordis-host-runner:^0.1.1-rc.2
  • 社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係,不應寫成官方應用商店。

結尾

dsh-plugin-security-review 的價值在於把動態插件安裝前的一次靜態審查、一次明確判定、一次人工審批和一組白名單規則放到同一條路徑裏。它適合 DSH / 智能體開發者在需要管理動態插件安裝與運行時使用。

GitHub 倉庫:

https://github.com/ShanHaiFish/dsh-plugin-security-review

社區目錄頁:已覈實資料未給出具體 URL。

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

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

小夜