dsh-plugin-doctor:DSH 插件安装前的静态安全审查

前言

在 DSH(DeepSeek Harness)里,能力往往通过插件扩展:装一个新包,就等于把一段代码放进当前 Harness 的运行环境。社区目录(例如 SkillHub)与 GitHub 上插件很多,但 README 写得再漂亮,也不能代替对源码和安装脚本的检查。常见做法是依赖第三方「审查类」插件,或人工翻目录;前者要信任另一条供应链,后者费时且容易漏看 postinstall 一类生命周期脚本。

下面介绍维护者 snow-The 发布的 dsh-plugin-doctor(包名 @snow-the/dsh-plugin-doctor,分类 admin-security):对插件目录做只读静态扫描,按风险给出 SAFE / LOW / MEDIUM / HIGH 分级,并附带 file:line 证据。README 明确说明不会执行被扫描的代码,适合在「安装前」或「怀疑已装包」时快速摸底。

这是什么

dsh-plugin-doctor 是 DSH 生态中的一款安全类插件,定位是「安装前静态审查(static pre-install vetting)」。作者将其描述为自研实现,用于替代第三方 vetting 插件。

扫描对象可以是:

  • 某次 checkout 的插件源码目录;
  • 已安装包路径,例如 ~/.dsh/profiles/*/node_modules 下的插件包。

输出是带评分的报告,便于人工决定是否安装、是否升级或是否卸载。

核心功能

分析方式

静态分析、只读文件内容,不运行被审查插件的 JavaScript/TypeScript。这一点对审查不可信来源尤为重要:审查过程本身不应触发网络外连或 shell 副作用。

检查项(README 列出的模式)

  1. 外泄(Exfiltration)
    向非 localhost 的 fetch/http(s)、子进程中的 curl/wget/nc、socket 等。

  2. 凭据访问(Credential access)
    读取 .ssh、.aws、.env、凭据文件,或对 process.env 的批量采集。

  3. 混淆(Obfuscation)
    超长 base64/hex、 eval/Function/vm、零宽字符 / 双向控制符等隐藏 Unicode。

  4. 持久化(Persistence)
    注册表 Run 项、启动文件夹、计划任务、向 shell rc 追加等(规则面向常见持久化写法)。

  5. 破坏性(Destructive)
    rm -rf / 一类危险删除、force push 等红旗。

  6. 生命周期脚本(Lifecycle hooks)
    preinstall / install / postinstall 等——README 注明这类脚本始终以安装器权限执行,值得人工重点看;插件会把它们标为需关注项。

提供的工具

插件向 DSH 注册两个工具(名称来自 README):

工具 作用
doctor_scan 扫描指定路径(目录或单文件);未指定路径时,默认针对当前 profile 下 node_modules 中的插件包
doctor_scan_path 与上一工具等价,但通过参数显式传入路径

具体调用方式取决于你当前 DSH 版本里 Agent 如何暴露插件工具;在对话中让 Harness 使用上述工具名即可,路径参数用于指向待审查目录或文件。

安装与启用

README 与 package.json 未给出独立的 dsh plugin add … 一类 shell 安装命令。安装与启用请以 SkillHub 页面指引及你本机 DSH 的插件管理流程为准。

兼容性(来自 package.json 的 dsh 字段):

  • compatibility.dshReleases:0.2.0-rc.1、0.2.0-rc.2、0.2.1-rc.1、0.2.1-rc.2
  • compatibility.verifiedAgainst:0.2.1-rc.2
  • peerDependencies:@deepseek-ai/dsh >=0.2.0-rc.1
  • engines.dsh:>=0.2.1-rc.2 <0.3.0-0

许可证:MIT。

典型用法

下面按 README 描述的使用路径组织步骤,便于在 Agent 会话中复现。

  1. 审查即将安装的源码目录
    将插件仓库或 tarball 解压目录作为扫描路径,调用 doctor_scan_path(或带路径参数的 doctor_scan)。阅读报告中的等级与 file:line,重点核对 HIGH/MEDIUM 及生命周期脚本相关证据。

  2. 审查本机已安装的插件
    不传路径时,doctor_scan 默认扫描当前 profile 下 node_modules 里的 DSH 插件包。适合升级 DSH 或批量装插件之后做一致性检查。

  3. 单文件快扫
    若怀疑某个入口或 package.json 里的脚本,可将路径指向单个文件,同样走上述工具。

报告中的 SAFE / LOW / MEDIUM / HIGH 是静态规则打分,不能替代人工判断:例如 LOW 的外连可能是文档示例,HIGH 的匹配也可能是测试夹具中的字符串。插件的价值在于集中列出疑点与位置,缩短人工 diff 的时间。

适用场景与注意

适合谁

  • 经常从社区目录或 GitHub 试装 DSH 插件的开发者;
  • 希望用统一规则替代或补充第三方 vetting 插件的团队;
  • 需要在 CI 或本地工作流里对插件目录做一次性静态扫瞄的场景(仍须自行接入 DSH 工具调用方式)。

务必注意

  1. 权限边界:与其它 DSH 插件一样,doctor 在当前 dsh 进程权限下运行;它能读你能读的路径,不能代替操作系统级的沙箱。安装任何插件前,仍应自行查看源码、许可证与发布者身份。

  2. 静态分析的局限:不执行代码意味着无法发现纯运行时行为(例如仅在特定环境变量下触发的分支)。相反,误报也可能出现,需结合上下文阅读证据行。

  3. 生命周期脚本:即使静态扫描未标红,preinstall / install / postinstall 仍可能在 npm install 阶段执行;README 已提醒应人工过目 package.json 中的 scripts 字段。

  4. 生态关系:DSH 强调「一切皆插件」;SkillHub 等目录由社区维护,与 DeepSeek / 幻方无官方从属关系。审查插件降低风险,不构成对第三方插件的背书。

结尾

dsh-plugin-doctor 用只读静态规则覆盖外泄、凭据、混淆、持久化、破坏性行为与安装脚本等常见红旗,并以分级报告和 file:line 证据支持安装前决策。若你已在用 DSH 管理插件,可在装包前或装包后对目录调用 doctor_scan / doctor_scan_path 做一次对照阅读。

  • 目录页:https://www.skillhub.cn/plugins/snow-The/dsh-plugin-doctor
  • GitHub:https://github.com/snow-The/dsh-plugin-doctor
羽毛球分组比赛记分
小程序二维码

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

小夜