前言¶
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.json、src/index.ts 与 src/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 / coverageVerdict 与 summary。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 |
汇总四类扫描,给出 riskVerdict 与 coverageVerdict 双维度 |
rules |
列出规则 code / severity / critical / 适用平台 |
src/rules.ts 里的规则是静态目录,不是运行时猜测。配置侧包括 secret-in-settings(非 credentials 文件出现疑似 token / key / 私钥)、credential-file-permissions、inline-private-key(私钥 PEM 或高置信秘密,severity 为 critical)、profile-path-outside-root。插件侧包括 plugin-unpinned-git(Git 来源未固定 commit)、plugin-path-outside-root、install-script、secret-like-file,以及源码静态能力类的 dynamic-code-execution / process-execution-capability / network-capability。会话侧包括 session-symlink、session-suspicious-expansion。网络侧包括 listen-all-interfaces(监听 0.0.0.0 / :: 且无认证证据)、plaintext-http-external、unknown-listener-state(无法确定实际绑定状态,明确标为 info,不当成 pass)。
README 把审计器自身的边界写进了安全模型,这几条决定它能信到什么程度:
- 只读:不修改、不删除任何文件,不执行被审计插件的代码,不主动连接远程目标。
scan_network只解析配置并分类 URL,从不探测。 - 秘密脱敏:疑似秘密只返回类型、长度、进程内随机 HMAC fingerprint、路径和行号。完整值不进入 canonical 输出;这是协议保证,不是截断。字段
redacted: true表示走了脱敏协议。 - 路径围栏:路径经过 lstat(拒绝 symlink)→ realpath → containment 三重检查。
root固定为进程启动时解析的$DSH_HOME,或管理员在插件配置里声明的allowedRoots。模型参数不能扩大读取范围。 - 诚实判定:finding / pass /
skipped/error四态。skipped(平台不支持或无权限)和error不计为 pass,coverage 降为incomplete。源码静态扫到的capabilityfinding 只提示人工确认,不裁定恶意。 - 预算:文件 ≤ 200、插件 ≤ 200、会话 ≤ 1,000、findings ≤ 1,000;源码单文件 ≤ 1 MiB(累计 ≤ 64 MiB);canonical 输出 ≤ 2 MiB;单 action 10 秒、
report30 秒。超限后置truncated。会话 zstd 扫描按帧预算截断,不整包解压。 - 可复现:输出无时间戳、路径稳定排序。工具参数会记入会话日志,不要把敏感数据传进参数。
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.patch(cordis.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 或发布前用 report 看 riskVerdict 与 coverageVerdict,比口头说「检查过了」更可复现。plugin-unpinned-git 这类规则也适合用来提醒:社区插件尽量固定 commit。
使用时注意下面几条,都来自仓库自己的边界说明,不是额外发挥:
- 这是诊断工具,不自动改文件、不替你卸载插件、不替你收紧权限。
coverageVerdict为incomplete时,表示有skipped或error,不能把没扫到的部分当成安全。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