前言¶
DSH 的理念是「一切皆插件」。插件进入 dsh 进程后,会运行在当前的 dsh 进程权限下,因此安装前需要检查源码、依赖、manifest 与可能的外连行为。社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系;目录页中的 verified=true 也只表示 dshbase CI 可安装,不等于安全审计结论。
@shaoshi/dshscan 解决的是这类问题:把插件源码、依赖、DSH manifest 和 DSH 特有攻击面放到一次扫描里,输出带严重等级和证据的报告,便于安装前判断或批量巡检。
这是什么¶
@shaoshi/dshscan 是 DSH 插件安全扫描器,由 shaoshi20 维护,许可证为 MIT。
它支持静态与语义双通道检查,内置 DSH 特有攻击面规则,集成 npm audit,支持批量扫描,并输出带严重等级与证据的 HTML 报告。
核心功能¶
- 输入形式:插件名、GitHub 仓库地址、本地目录、zip、Markdown 文件。
- 输出报告:JSON 报告包含
risk_score、severity、safe_to_install、recommendation、findings。 - 双通道扫描:静态规则扫描可完全离线;可选 LLM 语义扫描,需要设置
DSCAN_LLM_API_KEY或OPENAI_API_KEY。 - dshbase 集成:输入插件名时自动读取本地索引元数据。
- npm 源码扫描:npm 插件可自动
npm pack下载并扫描包内容。 - 依赖审计:检查未锁定版本、远程依赖源、依赖包名仿冒,并集成 npm audit。
- DSH manifest 校验:检查
dsh.bundle、cordis.patch.yml、LICENSE、README。 - DSH 攻击面规则:R010 插件树注入、R011 浏览器侧恶意代码、R012 profile 篡改、R013 manifest 混淆、R014 远程动态加载、R015 内置工具影子劫持。
- Benchmark 评估集:内置恶意/良性样例,可输出查全率、误报率、F1 与逐规则指标。
- 自定义规则:支持
--rules <file>。 - 策略文件:支持
--policy <file>。 - 审计日志:支持
--audit-log <file>。 - Web Dashboard:支持
--serve启动本地可视化面板,可用--history指定历史文件。 - HTML 报告:支持
--html输出独立网页报告。 - 误报处理:每条 finding 带证据和修复建议。
- 批量扫描:支持扫描 dshbase 插件目录并输出汇总 JSON / HTML。
- 定时巡检:可结合 GitHub Actions 每日自动拉取 dshbase 目录并批量扫描。
安装与启用¶
作为 DSH 插件安装:
dsh plugin add @shaoshi/dshscan
package.json 中声明:
peerDependencies: @deepseek-ai/dsh-tools 0.1.0-rc.6
dependencies: adm-zip ^0.5.16, yaml ^2.9.0
典型用法¶
扫描单个插件¶
dshscan <plugin-name>
输入插件名时,会读取本地索引元数据。
扫描仓库、本地目录、zip、Markdown¶
dshscan github:owner/repo
dshscan https://github.com/owner/repo
dshscan /path/to/plugin
dshscan plugin.zip
dshscan README.md
离线扫描与语义扫描¶
dshscan <plugin-name> --offline
dshscan <plugin-name> --semantic
静态扫描无需网络。扫描 GitHub 仓库获取源码需要网络,可用 --offline 跳过。启用 LLM 语义扫描需设置 DSCAN_LLM_API_KEY 或 OPENAI_API_KEY。
输出报告¶
dshscan <plugin-name> --output report.json --pretty
dshscan <plugin-name> --summary
dshscan <plugin-name> --html --output report.html
依赖审计、自定义规则与策略¶
dshscan <plugin-name> --audit
dshscan <plugin-name> --rules custom-rules.json
dshscan <plugin-name> --policy policy.json --audit-log audit.jsonl
Web Dashboard¶
dshscan --serve --port 8787
dshscan --serve --port 8787 --history /path/to/history.json
Benchmark 评估¶
dshscan --benchmark --summary
dshscan --benchmark --pretty
批量扫描¶
dshscan --batch --limit 50 --index /path/to/dshbase-directory.json --output batch.json --pretty
dshscan --batch --all --html --output batch.html
dshscan --batch --all --offline --output all.json
报告判定说明¶
JSON 报告中的 safe_to_install 为 true 仅当没有 high/critical finding,且 risk_score < 40。
未启用语义扫描时,报告会标注 scan_mode: static 和“仅静态扫描,非完整扫描”。
报告超过 100 条 finding 时,只展示按严重级排序的前 100 条,并置 findings_truncated: true;计分与安装建议仍基于全量。
索引文件缺失或损坏不会导致崩溃,会自动降级为无元数据通道并提示。可用 DSCAN_INDEX 指向索引文件。
扫描范围与排除¶
以下目录完全不扫描:
.github、.circleci、.gitlabthird_party、vendornode_modules、dist、build
适用场景与注意¶
@shaoshi/dshscan 适合:
- 安装第三方 DSH 插件前,检查插件源码、依赖、manifest 和 DSH 相关攻击面。
- 对插件目录做批量巡检,并输出汇总 JSON / HTML。
- 对扫描规则做 Benchmark 评估,查看查全率、误报率、F1 与逐规则指标。
- 在 GitHub Actions 中做定时扫描。
注意:DSH 插件会以当前 dsh 进程权限运行。安装前应检查源码、许可证、依赖与实际行为。verified=true 仅表示 dshbase CI 可安装,不等于安全审计。未启用语义扫描时,结果不是完整扫描。
链接¶
目录页:
https://dshbase.com/zh/plugins/shaoshi-dshscan/
GitHub:
https://github.com/shaoshi20/dshscan