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
踩坑提醒
安装前请审阅上游仓库;本指南基于已收录字段自动派生,可能滞后于最新版本。如发现与官方文档冲突,请以上游为准。
— 来源:通用规则