前言¶
DSH 本地环境会承载 API Key、token、会话内容和插件加载边界。服务监听公网、凭据文件权限过宽、插件来源不可信、会话文件结构异常等误配置,都可能带来真实风险。
现有工具各有侧重:plugin-check 只做结构/合规检查,不评估凭据暴露面、危险能力和路径逃逸;session-health 只做健康诊断,不涉及来源可信度与安全风险裁定;手工逐项排查则容易遗漏,且难以留档复现。
下面介绍社区插件 omdsh-dev/dsh-security-audit:以只读方式审计本机 DSH 环境,输出脱敏、可复现、可定位的风险报告。它不自动修复、不连接远程、不执行被审计插件,也不把「没读到」当作「安全」。
这是什么¶
dsh-security-audit 是 DSH 本机安全审计插件,由维护者 omdsh-dev 发布,分类为 admin-security。npm 包名为 @deepseek-ai/dsh-security-audit,row id 为 security-audit,许可证 MIT。
插件注册 security_audit 工具,统一输出 JSON 文本字符串。扫描范围覆盖:
- DSH 配置、profile、env/credentials 元数据
- 已安装插件来源与危险静态能力
- 会话目录权限与文件结构
- 监听配置与网络暴露面
所有 action 输出均带 { tool, version, root, platform, ... } 信封;扫描类 action 附带 verdict/riskVerdict/coverageVerdict 与 summary。
核心功能¶
安全模型¶
审计器自身有明确边界:
- 只读:不修改或删除任何文件,不执行被审计插件代码,不主动连接远程目标
- 秘密脱敏:疑似秘密只返回类型、长度、进程内随机 HMAC fingerprint、路径、行号;完整值不出现在 canonical 输出
- 路径围栏:路径经 lstat → realpath → containment 检查;
root固定为进程启动时解析的$DSH_HOME(或管理员声明的 allowedRoot),参数不能扩大读取范围 - 诚实判定:finding / pass /
skipped/error四态;skipped与error不计为 pass,coverage 降为incomplete;capability finding只提示人工确认,不裁定恶意 - 预算限制:文件 ≤ 200、插件 ≤ 200、会话 ≤ 1,000、findings ≤ 1,000;单 action 10s / report 30s
六个 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 |
列出规则目录与适用平台 |
常用参数:
| 参数 | 说明 |
|---|---|
action |
必填:scan_config / scan_plugins / scan_sessions / scan_network / report / rules |
root |
root 覆盖;必须等于 $DSH_HOME 或管理员声明的 allowedRoot |
profile |
限定单个 profile(^[A-Za-z0-9._-]{1,64}$,不接受路径) |
strict |
strict 模式:medium finding 也判 fail,默认 false |
detail |
详细输出,默认 true;敏感证据始终脱敏 |
includeSourceScan |
启用插件静态源码能力扫描(更慢、更多误报),默认 false |
输出示例¶
report 动作的典型输出如下。注意 fingerprint 与 redacted:true 是脱敏协议字段,不是截断提示:
{"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}
安装与启用¶
本插件已在 DSH 0.1.0-rc.8(npm)下完成全链路验证。DSH 0.1.0-rc.8 下,插件通过 dsh plugin --profile <profile> add <source> 安装,source 支持 GitHub 仓库或 npm pack tarball。
从 GitHub 安装(推荐)¶
交互式 web profile 与一次性 headless profile 需分别安装:
# 交互式(web)profile
dsh plugin --profile web add github:omdsh-dev/dsh-security-audit
# 一次性任务(headless)profile —— dsh run 默认使用 headless
dsh plugin --profile headless add github:omdsh-dev/dsh-security-audit
从 npm pack tarball 安装¶
npm pack 产物可直接作为 source 安装:
dsh plugin --profile web add dsh-security-audit-*.tgz
包内 dsh.bundle.patch 会在安装后自动把插件加入 profile 的 layer stack(row id:security-audit)。插件缺失的 peer 依赖(@deepseek-ai/cordis、@deepseek-ai/dsh-tools、@deepseek-ai/dsh-invariants)由 profile 的 healed profiles/node_modules 回退安装提供。
web 与 headless 是不同 profile:web 安装不会自动覆盖 headless;
dsh run默认使用 headless profile。Windows 路径使用正斜杠(C:/...)。
验证安装¶
dsh --profile web --dump-config | grep security-audit
典型用法¶
安装完成后,可用自然语言让 DSH 调用审计工具:
dsh run "运行 security_audit 的 report 动作,检查本机 DSH 环境安全风险"
也可按需分步执行各 action,例如先 scan_config 检查配置与凭据元数据,再 scan_plugins 核对插件来源,最后用 report 汇总。需要更严格判定时,传入 strict: true;需要检查插件源码静态能力时,开启 includeSourceScan(更慢、误报更多)。
工具参数会记入会话日志,调用时不要传入敏感数据。
适用场景与注意¶
适合谁
- 在本地 DSH 环境存放 API Key、token 的开发者,需要定期自查配置与凭据暴露面
- 安装多个社区插件后,想核对来源可信度与危险静态能力
- 需要可复现、可留档的安全检查记录,替代分散的手工排查
使用前注意
- 插件以当前
dsh进程权限运行,能读到的范围取决于本机权限与$DSH_HOME布局 - 安装前应检查源码与 MIT 许可证:https://github.com/omdsh-dev/dsh-security-audit
capability finding仅提示人工确认,不裁定恶意;scan_network的状态为配置级推断,listener 实际状态可能标注为unknown-listener-state- 本插件不自动修复问题,发现风险后需人工处理
DSH 生态遵循「一切皆插件」理念;社区目录 SkillHub 是独立站点,与 DeepSeek / 幻方无官方从属关系。
链接¶
- 目录页:https://www.skillhub.cn/plugins/omdsh-dev/dsh-security-audit
- GitHub:https://github.com/omdsh-dev/dsh-security-audit
经过上面的步骤,你可以在不动本机文件的前提下,对 DSH 配置、插件、会话与网络暴露面做一次系统性只读审计,拿到脱敏且可定位的风险报告。