前言¶
DSH 可以安装第三方插件。插件进入 profile 后,可能触达文件、进程、网络、环境变量和凭据路径。dsh-plugin-audit 提供静态权限画像和运行时哨兵,帮助管理员在运行第三方插件前判断它的权限面。
这是什么¶
dsh-plugin-audit 是 DeepSeek Harness 的安全审计插件,由 jkrandom-sudo 维护,许可证为 MIT,当前版本为 0.1.4。它做两件事:用 plugin_audit 静态扫描第三方插件,并在运行时对高风险工具调用请求审批。
核心功能¶
下面先介绍静态画像,再介绍运行时哨兵。
静态权限画像¶
plugin_audit 扫描一个插件目录。它会查看插件源码目录、package.json 和 cordis.patch.yml,然后返回一张权限画像卡片,并附文件与行号证据。
静态扫描器会报告它发现的每一个网络面。它不根据 allowedHosts 做白名单过滤,也不做最终风险裁决;报告是给人工复核用的证据。
运行时哨兵¶
dsh-plugin-audit 监听 DSH 的 tools/pre-execute 事件。当一次待执行工具调用命中以下规则时,哨兵会请求审批:
1、工具参数引用了凭据路径;
2、工具调用外发数据,目标主机不在 allowedHosts 中;
3、写工具目标是 home 目录下的 dotfile。
如果没有可用审批通道,插件会拒绝该工具调用,而不是静默放行。
哨兵只检查工具调用名称和参数,不读取文件、环境变量,也不检查调用参数之外的会话内容。
只读约束¶
扫描器按约定只读。每一份报告都携带 writesPerformed: false。可选的 invariant companion 可以强制这个标记。
扫描器的扫描边界如下:
- 最多 400 个文件,单文件上限 256 KB;
- 跳过
node_modules、.git、lib、dist; - 不跟随符号链接目标;
- 基于源码文本,而不是 AST,因此字符串和注释也可能被报告;
- 只包含构建产物的包至少会得到
NOTICE级别; - 插件不发起网络调用,也没有遥测;报告中的主机是从被扫描文本中提取的,不会被访问。
安装与启用¶
先安装到 web profile:
dsh plugin --profile web add dsh-plugin-audit
经过上面的步骤后,在已安装该插件的 profile 中使用 plugin_audit。
移除插件:
dsh plugin --profile web remove dsh-plugin-audit
典型用法¶
在会话中可以使用这样的示例:
Audit the plugin at ~/some-third-party-plugin with plugin_audit
也可以直接调用工具:
{
"path": "/absolute/path/to/plugin",
"format": "markdown"
}
这里 path 指向要审计的插件目录,format 为 markdown。
配置¶
哨兵和允许主机通过 profile 的 cordis.patch.yml 配置:
sentinelEnabled: true
allowedHosts:
- example.com
- api.example.com
sentinelEnabled 控制运行时哨兵是否启用;allowedHosts 配置允许的外发主机。静态扫描器不受 allowedHosts 影响。
兼容性¶
| 项 | 要求 |
|---|---|
| DSH mainline | verified against 2026-08-14 snapshot |
| Node.js | ^22.19.0 || >=24.0.0 |
| Cordis | ^4.0.0-rc.7(peer dependency) |
适用场景与注意¶
适合在以下场景使用:
- 安装 DSH 第三方插件前,先查看它的权限画像;
- 在运行时拦截引用凭据路径、访问未知主机或写入 home dotfile 的工具调用;
- 为不同 profile 配置不同的
allowedHosts。
注意:DSH 插件以当前 DSH 进程权限运行。安装前应检查源码、许可证和配置项。审计卡片是证据,不等于安全结论;对敏感插件,应人工复核文件、网络、进程和凭据相关发现。
链接¶
GitHub 仓库:https://github.com/jkrandom-sudo/dsh-plugin-audit
目录页:https://www.skillhub.cn/plugins/jkrandom-sudo/dsh-plugin-audit