dsh-plugin-security-review:给 DSH 动态插件安装加一道静态安全审查

前言

在 DSH 的插件机制里,动态插件经常通过 cordis_definecordis_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_definepurpose 末尾追加能力声明:

CAPABILITIES: spawn,network,env,fs

动态插件回退形态

动态回退形态用于没有 bundle 能力的 profile,基本步骤是:

  1. 读取 package-source.jsmanifest.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。

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

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

Xiaoye