跳到主内容

dsh-security-audit 使用指南

DSH 本机只读安全审计插件:扫描配置/插件/会话/网络四个维度,输出脱敏、可复现、可定位的风险报告;不修复、不联网、不执行被审计插件。

本文为派生内容(基于 wiki / faq / compatibility_json 自动组装),非 AI 即时创作。

本文由本站基于该插件已收录的字段自动派生(wiki / faq / compatibility_json / readme),非 AI 即时创作。每节末尾标源字段。

快速上手

dsh-security-audit

— 源: plugin_wiki.wiki_content

安装与验证

dsh plugin --profile web add github:omdsh-dev/dsh-security-audit

复制以上命令在 DSH Web Profile 内运行。安装完成后在「插件列表」启用即可。

— 源: plugins.install

关键要点

  • 只读:绝不修改/删除任何文件,绝不执行被审计插件的代码,绝不主动连接远程目标
  • 秘密脱敏:疑似秘密只返回类型 / 长度 / 进程内随机 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

— 源: plugin_wiki.readme_zh (fallback readme_raw)

常见问题

输出的报告里会出现明文密钥吗?

不会。插件读取疑似 token/key/private key/密码后,立即用进程内随机 HMAC key 计算 fingerprint 写入 canonical 输出,原始值只用于指纹计算、永远不会离开读取路径(src/redact.ts:83-115 / src/index.ts:53-57)。

报告会修改本机任何文件吗?

不会。设计层就保证只读:所有路径先 lstat 拒绝 symlink → realpath → containment 校验,root 固定为进程启动时解析的 $DSH_HOME,模型参数不能扩大读取范围;不做 chmod、不删文件、不执行被审计插件、不主动连接远程目标(src/paths.ts:80-95 / src/index.ts:7-14)。

为什么 scan_network 没有去做实际端口探测?

这是有意的设计边界。scan_network 只解析本机配置中的 listen/URL/代理字段并按规范分类,不能判定时返回 unknown-listener-state 作为 info finding,绝不主动探测或连接远程,因此不会因为审计而触发真实网络流量(src/network/checks.ts:1-5 / src/rules.ts:61)。

Windows 上能跑吗?会有什么差异?

能跑。plugin 本身是跨平台 Node 脚本;但权限规则在 Windows 上没有零副作用的 ACL API,所以 credential-file-permissions / session-root-permissions / session-file-permissions 三个 critical 规则在 Win32 会返回 skipped(不是 pass),报告的 coverageVerdict 会被判为 incomplete(src/platform/windows.ts:7-16 / src/runner.ts:138-150)。

includeSourceScan 是干什么的,要不要打开?

启用后会额外静态扫描每个已安装插件的 .ts/.js/.mjs/.cjs/.tsx/.jsx 源码,去匹配 eval、new Function、vm、child_process、spawn、net/http/fetch、WebSocket 等高风险能力字符串。能力命中只生成 finding、明确不裁定恶意,需要人工确认用途;因此更慢且可能更多误报,README 把它标为可选,默认关闭(src/plugins/source-capabilities.ts:20-24 / src/plugins/source-capabilities.ts:120-155)。

报告里 coverageVerdict 显示 incomplete 是坏消息吗?

不一定意味着漏判。它代表有 critical 规则被 skipped(平台不支持或权限不足)或 scanner 报 error—— Windows 权限规则就是典型触发场景。需要结合 report 的 checks 列表看具体是哪些规则 skipped,并按根因决定是接受当前覆盖率、还是修改提权后再跑一次(src/runner.ts:138-150 / src/rules.ts:19-62)。

strict 模式建议开吗?

个人自查建议先关(默认 false),避免 medium finding 单独触发 fail 让报告一片红;正式上线前 / CI 卡点场景再开 strict,让 medium 等同 high 看待。找到的高优问题应直接落到 repair 而不是反复重跑(src/runner.ts:129-134 / src/index.ts:73-76)。

怎么卸载和降级?

与其它 DSH 插件相同:用对应 profile 的 dsh plugin remove security-audit。本插件不写全局状态、不留守护进程、不在 $DSH_HOME 之外产生副作用,移除后审计历史只留在你主动保存的 JSON 报告里。

— 源: plugin_wiki.faq_json

兼容性

  • DSH: 0.1.0-rc.8+ (已验证)
  • Node: >=22.19.0 或 >=24.0.0
  • Platforms: macOS, Linux, Windows

— 源: plugin_wiki.compatibility_json

踩坑提醒

安装前请审阅上游仓库;本指南基于已收录字段自动派生,可能滞后于最新版本。如发现与官方文档冲突,请以上游为准。

— 来源:通用规则

dsh-security-audit 使用指南