dsh-security-audit:DSH 本机安全审计与脱敏风险报告

前言

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/coverageVerdictsummary

核心功能

安全模型

审计器自身有明确边界:

  1. 只读:不修改或删除任何文件,不执行被审计插件代码,不主动连接远程目标
  2. 秘密脱敏:疑似秘密只返回类型、长度、进程内随机 HMAC fingerprint、路径、行号;完整值不出现在 canonical 输出
  3. 路径围栏:路径经 lstat → realpath → containment 检查;root 固定为进程启动时解析的 $DSH_HOME(或管理员声明的 allowedRoot),参数不能扩大读取范围
  4. 诚实判定:finding / pass / skipped / error 四态;skippederror 不计为 pass,coverage 降为 incompletecapability finding 只提示人工确认,不裁定恶意
  5. 预算限制:文件 ≤ 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 动作的典型输出如下。注意 fingerprintredacted: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 的开发者,需要定期自查配置与凭据暴露面
  • 安装多个社区插件后,想核对来源可信度与危险静态能力
  • 需要可复现、可留档的安全检查记录,替代分散的手工排查

使用前注意

  1. 插件以当前 dsh 进程权限运行,能读到的范围取决于本机权限与 $DSH_HOME 布局
  2. 安装前应检查源码与 MIT 许可证:https://github.com/omdsh-dev/dsh-security-audit
  3. capability finding 仅提示人工确认,不裁定恶意;scan_network 的状态为配置级推断,listener 实际状态可能标注为 unknown-listener-state
  4. 本插件不自动修复问题,发现风险后需人工处理

DSH 生态遵循「一切皆插件」理念;社区目录 SkillHub 是独立站点,与 DeepSeek / 幻方无官方从属关系。

链接

经过上面的步骤,你可以在不动本机文件的前提下,对 DSH 配置、插件、会话与网络暴露面做一次系统性只读审计,拿到脱敏且可定位的风险报告。

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

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

小夜