安装前扫描插件权限与危险代码,守住准入关
29.2/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add RyeSama/dsh-plugin-guard该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · security
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 12 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 29 处,展示前 29 条)
- 读取本地文件plugins/dsh-guard-tool/spec.js:11
const raw = await readFile(join(root, 'package.json'), 'utf8') - 写入本地文件src/audit/sidecar.ts:24
await mkdir(dirname(this.path), { recursive: true }) - 写入本地文件src/audit/sidecar.ts:33
await mkdir(dirname(this.path), { recursive: true }) - 写入本地文件src/audit/sidecar.ts:34
await appendFile(this.path, JSON.stringify(entry) + '\n', { encoding: 'utf8', mode: 0o600 }) - 读取本地文件src/audit/sidecar.ts:40
text = await readFile(this.path, 'utf8') - 执行外部命令来自配置/变量src/cli/doctor.ts:19
? spawn(process.env['ComSpec'] ?? 'cmd.exe', ['/d', '/s', '/c', [command, ...args].join(' ')], { - 执行外部命令来自配置/变量src/cli/doctor.ts:22
: spawn(command, args, { windowsHide: true }) - 请求外部主机registry.npmjs.orgsrc/cli/doctor.ts:59
const response = await fetch('https://registry.npmjs.org/-/ping', { signal: controller.signal }) - 发起网络请求src/cli/doctor.ts:59
const response = await fetch('https://registry.npmjs.org/-/ping', { signal: controller.signal }) - 写入本地文件src/cli/doctor.ts:82
await mkdir(dirname(path), { recursive: true }) - 读取本地文件src/cli/doctor.ts:83
await access(dirname(path), constants.W_OK) - 写入本地文件src/cli/init.ts:106
await mkdir(dir, { recursive: true }) - 读取本地文件src/scanner/analyze.ts:98
const buffer = await readFile(joinInside(root, rel)) - 发起网络请求src/scanner/npm.ts:53
const response = await fetch(url, { - 发起网络请求src/scanner/npm.ts:134
const response = await fetch(meta.tarball, { - 写入本地文件src/scanner/npm.ts:171
await mkdir(directory, { recursive: true }) - 读取本地文件src/scanner/resolve.ts:53
const info = await stat(asPath) - 删除本地文件递归src/scanner/resolve.ts:114
await rm(directory, { recursive: true, force: true }) - 写入本地文件src/scanner/tar.ts:68
await mkdir(join(destDir, safeRelativePath(dir)), { recursive: true }) - 写入本地文件src/scanner/tar.ts:85
await mkdir(dirname(target), { recursive: true }) - 写入本地文件src/scanner/tar.ts:86
await writeFile(target, body, { mode: 0o644 }) - 读取本地文件src/util/fsx.ts:32
await access(path, constants.F_OK) - 读取本地文件src/util/fsx.ts:41
const info = await stat(path) - 读取本地文件src/util/fsx.ts:43
const buffer = await readFile(path) - 写入本地文件src/util/fsx.ts:74
await mkdir(dirname(path), { recursive: true }) - 写入本地文件src/util/fsx.ts:84
await rename(temp, path) - 删除本地文件src/util/fsx.ts:86
await rm(temp, { force: true }) - 读取本地文件src/util/fsx.ts:134
entries = await readdir(directory, { withFileTypes: true }) - 读取本地文件src/util/fsx.ts:154
const info = await lstat(abs)
扫描于 2026/11/1(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库
涉及外部主机:registry.npmjs.org
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DSH 插件的安全治理与准入层:一条命令扫描、dsh.permissions 规范、信任指数、运行时审计适配器。
README
由 DeepSeek 最新模型翻译生成npx dsh-plugin-guard-cli scan ./my-plugin # 一条命令,不用安装、不用配置、不用登录
干净的插件会输出 PASS 100/100 — 0 high · 0 medium · 0 low;有风险时直接给出问题、文件行号和修复命令。
dsh-plugin-guard
在安装 DSH 插件前、发布自己的插件前、以及在 CI 里运行的安全准入检查。
DSH 插件是带有 dsh 字段的 npm 包,会被组合进 DSH 宿主进程。这个边界上没有沙箱:插件与 DSH 同权限运行。本工具不改变这一点,它只把"即将发生的决定"提前变得可见:
- scanner — 只读取、绝不执行插件代码,报告它被允许做什么
- 权限清单 — 本项目提出的 dsh.permissions 约定,让插件声明自己读什么、写什么、执行什么、发往哪里
- 信任索引 — 本地记录你审查过的源码哈希,静默重发布会被发现
- 运行时审计适配器 — 有接口、有 sidecar 实现,并如实说明 DSH 今天没有开放什么
它不是沙箱,不是杀毒软件,也不能代替你自己读代码。
展开完整文档(README 剩余 1 节)
npx dsh-plugin-guard-cli scan ./my-plugin # 一条命令,不用安装、不用配置、不用登录 干净的插件会输出 PASS 100/100 — 0 high · 0 medium · 0 low;有风险时直接给出问题、文件行号和修复命令。 dsh-plugin-guard 在安装 DSH 插件前、发布自己的插件前、以及在 CI 里运行的安全准入检查。 DSH 插件是带有 dsh 字段的 npm 包,会被组合进 DSH 宿主进程。这个边界上没有沙箱:插件与 DSH 同权限运行。本工具不改变这一点,它只把"即将发生的决定"提前变得可见: - scanner — 只读取、绝不执行插件代码,报告它被允许做什么 - 权限清单 — 本项目提出的 dsh.permissions 约定,让插件声明自己读什么、写什么、执行什么、发往哪里 - 信任索引 — 本地记录你审查过的源码哈希,静默重发布会被发现 - 运行时审计适配器 — 有接口、有 sidecar 实现,并如实说明 DSH 今天没有开放什么 它不是沙箱,不是杀毒软件,也不能代替你自己读代码。 扫描内容 | 类别 | 会被标记的例子 | | DSH 清单 | 缺少 dsh 字段、bundle.patch 指向未随包发布的文件、DSH 版本范围无法解析 | | npm 状态 | 未发布、已废弃、本地版本比已发布版本新 | | 权限 | 没有 dsh.permissions、声明非法、代码用了没声明的能力 | | 危险代码 | child_process、eval/new Function、vm.runIn、动态 require/import、process.binding、混淆载荷 | | 安装脚本 | preinstall、install、postinstall —— 在任何人审查之前就执行的代码 | | 依赖 | 缺 lockfile、 / latest / git / http 版本、依赖面过大 | | 网络 | 代码里写死、却没有声明的目标主机 | | 来源完整性 | 包哈希与你索引里记录的不一致、发布者变化 | 完整规则与严重级别:npx dsh-plugin-guard-cli rules。 命令 npx dsh-plugin-guard-cli scan ./my-plugin npx dsh-plugin-guard-cli scan ./my-plugin --json npx dsh-plugin-guard-cli scan dsh-startup-screen-repair --check-publish npx dsh-plugin-guard-cli doctor npx dsh-plugin-guard-cli init ./my-plugin --dry-run npx dsh-plugin-guard-cli index add ./my-plugin npx dsh-plugin-guard-cli index list npx dsh-plugin-guard-cli index verify ./my-plugin # 复核后代码有没有被改过 npx dsh-plugin-guard-cli audit status 退出码 | 退出码 | 含义 | | 0 | 通过,或只有提示 | | 1 | 存在 high 问题(或加了 --fail-on-medium 时的 medium 问题) | | 2 | 用法错误:未知参数、未知规则 id、--max-files 非法 | | 3 | 扫描无法进行:目标不存在、网络失败、package.json 读不了 | 零配置 没有配置文件,也不需要 init。默认:所有规则开启、本地目录扫描不联网、输出人类可读报告、高危即非零退出。可调项只有参数: --json、--offline、--check-publish、--only <ids>、--ignore <ids>、--fail-on-medium、--dsh-version <v>、--max-files <n>、--record、--verbose。 声明权限 dsh.permissions 是本项目提出的约定,DSH 目前不会读它,扫描器也无法在运行时强制执行——它只检查声明是否存在、是否合法、是否与代码实际行为一致。 字段与语义见 docs/permissions-spec.md(英文)。 信任索引 默认位置 ~/.dsh-plugin-guard/index.json,可用 DSH_GUARD_INDEX 覆盖。按 name@version 记录:包哈希、目录树哈希、发布者、扫描结论、扫描时使用的 DSH 版本。没有索引也能扫描,只是对 registry 包会标注"来源未验证",而不是假装安全。 运行时审计:哪些是真的 DSH 目前没有公开的插件审计事件流,也没有进程内隔离。因此本项目提供: - 文档化的 RuntimeAuditAdapter 接口; - sidecar 实现:把 NDJSON 事件追加到 ~/.dsh-plugin-guard/audit.ndjson; - audit status:用白话说清楚"没有官方钩子",而不是伪造能力。 详见 docs/audit-adapter.md 与 docs/threat-model.md。 在 DSH 里使用 同一个扫描器也打包成了 DSH 插件 bundle,agent 可以在安装前自己先查一遍: dsh plugin --profile desktop add dsh-plugin-guard-tool 它注册一个工具 plugin_guard:传目录或 npm 包名,返回判定、原因和下一条命令——和命令行同一份输出,只是不用切终端。 装之前先扫一下 dsh-plugin-gate FAIL 0/100 · 1 高危 · 1 中危 · 2 低危 HIGH security/dangerous-api Evaluates code at runtime (lib/rules.js:136) 这个 bundle 没有客户端代码,所以桌面 UI 里不会多出任何面板。它是独立的 npm 包(plugins/dsh-guard-tool),因为 DSH 是按 manifest 解析 bundle 的:一个包要么是 bundle、要么是 CLI,两边都沾会让"准入"这件事说不清楚。 非目标 - 不是沙箱:DSH 加载插件后,它无法阻止恶意代码。 - 不是代码审计:它找模式,不判断意图。 - 不替代 npm audit 或 lockfile。 - 绝不运行、导入、安装或求值被扫描的插件。 - 不读取你的 .env、凭据、SSH 密钥或浏览器数据;扫描器会跳过这些路径,并拒绝扫描整个用户目录。 安全声明 扫描器只读文件:不会 require/import 被扫描的包,不执行 postinstall,不解析其依赖,也不往被扫描目录里写任何东西。只有 scan <npm 包名>、--check-publish、index add <npm 包名> 和 doctor 会联网。报告不含机密:路径都相对于包根目录。 如果你能让扫描器执行被扫描的代码,那是安全漏洞,请开 issue。 开发 npm ci npm run verify # lint + typecheck + test + build npm run smoke # 打包后用 npx 跑 tests/fixtures/clean-plugin 需要 Node 20+,没有原生依赖,发布包内已打包 commander 与 zod。 许可证 MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
RyeSama/dsh-plugin-guard
安装前扫描插件权限与危险代码,守住准入关
相关插件 · 安全 / 权限
智能体逆向工程morluto/rea
用智能体逆向工程任何东西,从应用行为到原生二进制。
★ 415,267已汉化DSH
73.3
智能体集群框架ruvnet/ruflo
面向 Claude Code 与 Codex 的智能体元基座meta-harness。
★ 80,414已汉化MCP
71.9
WorkBuddy 模型接入corrinehu/dsh-workbuddy-connect
2026 年 10 月 20 日起,WorkBuddy…
★ 1,604已汉化DSH
71.7
破甲一键通z91772524-ai/pojia-next
十五个 AI…
★ 967已汉化DSH
71.6
AI 代理虚拟终端strukto-ai/mirage
Mirage 是给 AI 智能体用的虚拟终端:一层 shell,统管数据、命令行和运行时。Unix…
★ 3,756已汉化DSH
70.8
Agent 操作层agentic-os-org/ANOLISA
ANOLISA(Agentic Nexus Operating Layer & Interface System Architecture)|智能体操作系统,带运行时、安全、可观测性,以及 Tokenless 响应压缩,降低 token 用量与成本。
★ 649已汉化DSH
70.7