DSH 插件安全审计
DSH 插件安全审计 —— 自动扫描已安装插件的风险隐患,在 GUI 设置页展示分级结果与证据。
查看详细介绍
dsh-plugin-security-audit
DSH 插件安全审计 —— 自动扫描已安装插件的风险隐患,在 GUI 设置页展示分级结果与证据。
安装后,它会自动检查 DSH 里每个第三方插件的代码是否存在凭据窃取、数据外发、任意代码执行、远程控制面、明文密钥落盘、代码混淆、恶意安装脚本等风险模式,按「严重 / 高危 / 中危 / 低危 / 未发现明显风险」分级,并给出 证据(文件:行号 + 代码片段)与处置建议。
✨ 功能
- 首次安装全量检查:装上后自动对全部已安装插件做一次全面静态安全扫描(本机实测 138 个插件)。
- 增量自动补扫:之后每安装或升级一个新插件,打开审计卡片时自动只扫描新插件并显示结果,不动旧数据。
- 设置页卡片:设置 → 插件 → 可配置,出现「插件安全审计」卡片;内置「刷新」「重新扫描全部」按钮。
- 风险分级 + 证据链:每条发现都带严重度、类别、触发代码位置与修复建议,可展开查看。
- 官方插件降噪:官方
@deepseek-ai/*插件默认可信,能力项聚合展示,不淹没第三方插件的信号。- 不执行被扫描的代码:纯静态分析,只读文件文本,绝不运行被检查插件的任何代码。
- 结果不出本机:扫描结果仅写入
~/.dsh/plugin-security-audit.json,无任何网络上报。📖 使用方法
- 打开 DSH Web GUI,进入 设置 → 插件 → 可配置;
- 展开「插件安全审计」卡片;
- 查看总览(严重/高危/中危计数)与每个插件的风险分级;
- 点开某个插件行,查看每条发现的证据(文件:行号 + 代码片段)与处置建议;
- 安装新插件后重新打开卡片,新插件会自动完成扫描;也可以点「重新扫描全部」强制全量重扫。
🔍 检查项(九大类)
| 类别 | 检查内容 | 默认级别 | | --- | --- | --- | | 凭据窃取 | 读取
~/.dsh/.credentials.yaml、环境变量中的 API Key/令牌、浏览器存储、内联密钥字面量、硬编码 Bearer | 严重/高危 | | 数据外发 | fetch/http/net/WebSocket/axios/sendBeacon 等外发调用;非白名单外部主机;读文件+网络发送组合 | 中危 | | 任意代码执行 | eval / Function / vm / 动态 require/import;child_process 子进程;shell 命令拼接 | 高危 | | 远程控制面 | 启动 HTTP/网络服务、监听 0.0.0.0、WebSocket 服务端、内网穿透工具(cloudflared/ngrok/frp…)、配对/远程控制机制 | 严重/高危 | | 密钥落盘 | 把密码/密钥/令牌写入文件、注释承认明文存储 | 严重/高危 | | 文件系统越权 | 绝对路径、..路径穿越、读写 DSH 内部数据目录、删除文件、访问用户主目录 | 中危 | | 持久化 | 安装时自动执行脚本(preinstall/install/postinstall)、定时/监视触发机制 | 高危 | | 代码混淆 | 大量 eval、base64 解码、字符编码技巧、超长单行块 | 中危 | | 供应链 | git/file/tarball 非锁定依赖、缺少源码仓库声明 | 中危 |严重度按「模式对恶意的指示强度」校准:能力类(env 读取、eval、子进程、网络)标为中/高危并提示「确认用途」;强指示类(硬编码密钥、读 DSH 凭据库、密钥落盘、隧道、配对)直接标严重/高危。注释行、同源 API 调用、正则
.exec()等常见误报源已在引擎中排除。📦 安装
方式一:从 GitHub 安装(推荐,发布后可用)
dsh plugin --profile web add github:<你的用户名>/dsh-plugin-security-audit也可在 GUI 的市场(dshmarket)「发现」页按仓库名搜索安装。
方式二:手动复制 + 补丁热加载
# 1. 把本仓库整个目录复制进 profile 的 node_modules: cp -r dsh-plugin-security-audit ~/.dsh/profiles/web/node_modules/ # 2. 在 ~/.dsh/profiles/web/cordis.patch.yml 末尾追加: # - insert: # - id: plugin-security-audit # name: 'dsh-plugin-security-audit'补丁文件被 DSH 热监视,保存后立即生效(宿主代码更新需重启一次 GUI)。
卸载
- 删除
~/.dsh/profiles/web/cordis.patch.yml中对应insert条目;- 删除
~/.dsh/profiles/web/node_modules/dsh-plugin-security-audit/目录;- 可选:删除扫描结果文件
~/.dsh/plugin-security-audit.json。🔒 安全模型与隐私
- 只读静态分析:扫描器遍历每个插件包内的
.js/.cjs/.mjs/.ts源码与package.json,用模式匹配做静态检查,从不 import、require 或执行被扫描插件,因此被审计的恶意插件无法在审计过程中发作。- 回环护栏:审计 API(
/api/plugin-security/*)只允许本机回环地址与同源浏览器访问,防止局域网/公网探取审计报告。- 数据留本地:结果仅存
~/.dsh/plugin-security-audit.json,插件不含任何网络上报逻辑。- 官方插件降噪:
@deepseek-ai/*被视为平台自身,能力项聚合为摘要,异常项仍会单独列出。⚠️ 局限性与免责声明
- 静态分析 ≠ 行为证明:它检查本机安装的文件文本,无法证明运行时行为,也无法发现只在特定运行条件下出现的恶意逻辑。
- 「未发现明显风险」≠「可信」:精心构造的恶意代码可以绕过一切静态规则。请结合来源可信度、版本更新频率与社区口碑综合判断。
- 不核验上游一致性:无法验证本地安装的包与发布源码是否逐字节一致(npm 包可能是从别的提交构建的)。
- 误报与漏报:本引擎已针对常见误报(注释、正则
.exec()、同源 fetch、相对导入)做排除,但仍可能存在误报或漏报;每条发现都附证据,请以人工复核为准。- 本插件仅提供检测与提示,不自动卸载或隔离任何插件——是否处置由你决定。
📁 目录结构
dsh-plugin-security-audit/ ├── lib/ │ ├── index.js # 宿主半:注册 /api/plugin-security/results、/api/plugin-security/scan(回环护栏) │ ├── scanner.js # 审计引擎:插件枚举、九大类静态检查、风险分级、状态存储与增量 diff(纯 Node 零依赖) │ └── client.js # 浏览器半:设置页审计结果卡片(手写 __ModuleLoader__ bundle,无构建链) ├── cordis.patch.yml # bundle patch:向 profile 插入插件条目 ├── package.json # npm 包声明(dsh.bundle.patch / dsh.client) └── README.md🧪 开发与测试
引擎是纯 Node 模块,可脱离 DSH 直接测试:
# 语法检查 node --check lib/scanner.js && node --check lib/client.js # 直接对任意目录跑扫描(临时 DSH_HOME 避免污染真实状态) $env:DSH_HOME = "$PWD/.test-home" # PowerShell node -e "import('./lib/scanner.js').then(m => console.log(JSON.stringify(m.buildReport({force:true}).overall)))"新增检查项:在
lib/scanner.js的check*函数区按{ re, severity, title, advice }模式追加即可,严重度与风险分级会自动聚合。📄 License
MIT © Fridgespy