@shaoshi/dshscan:DSH 插件安全扫描器

前言

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_scoreseveritysafe_to_installrecommendationfindings
  • 双通道扫描:静态规则扫描可完全离线;可选 LLM 语义扫描,需要设置 DSCAN_LLM_API_KEYOPENAI_API_KEY
  • dshbase 集成:输入插件名时自动读取本地索引元数据。
  • npm 源码扫描:npm 插件可自动 npm pack 下载并扫描包内容。
  • 依赖审计:检查未锁定版本、远程依赖源、依赖包名仿冒,并集成 npm audit。
  • DSH manifest 校验:检查 dsh.bundlecordis.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_KEYOPENAI_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_installtrue 仅当没有 high/critical finding,且 risk_score < 40

未启用语义扫描时,报告会标注 scan_mode: static 和“仅静态扫描,非完整扫描”。

报告超过 100 条 finding 时,只展示按严重级排序的前 100 条,并置 findings_truncated: true;计分与安装建议仍基于全量。

索引文件缺失或损坏不会导致崩溃,会自动降级为无元数据通道并提示。可用 DSCAN_INDEX 指向索引文件。

扫描范围与排除

以下目录完全不扫描:

  • .github.circleci.gitlab
  • third_partyvendor
  • node_modulesdistbuild

适用场景与注意

@shaoshi/dshscan 适合:

  1. 安装第三方 DSH 插件前,检查插件源码、依赖、manifest 和 DSH 相关攻击面。
  2. 对插件目录做批量巡检,并输出汇总 JSON / HTML。
  3. 对扫描规则做 Benchmark 评估,查看查全率、误报率、F1 与逐规则指标。
  4. 在 GitHub Actions 中做定时扫描。

注意:DSH 插件会以当前 dsh 进程权限运行。安装前应检查源码、许可证、依赖与实际行为。verified=true 仅表示 dshbase CI 可安装,不等于安全审计。未启用语义扫描时,结果不是完整扫描。

链接

目录页:

https://dshbase.com/zh/plugins/shaoshi-dshscan/

GitHub:

https://github.com/shaoshi20/dshscan
羽毛球分组比赛记分
小程序二维码

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

小夜