MangShe3-0 / dsh-plugin-guard

Listed

Offline-first security scanner for DeepSeek Harness plugins: prompt injection, ransomware, exfiltration, and supply-chain risks.

mainSkill View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:MangShe3-0/dsh-plugin-guard

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit 6ebf262Synced Aug 18, 2026

This README snapshot could not be refreshed during the latest directory sync.

DSH Plugin Guard

DeepSeek Harness 插件的安装前安全检查插件。默认离线、只读,不执行被扫描代码,不跟随符号链接,也不会把插件内容发送给大模型或第三方服务。

重要:静态扫描只能发现已知风险信号,不能证明插件安全。REVIEWABLE 的含义是“可以继续人工审查”,不是“绝对安全”。

能检查什么

  • 提示词注入:覆盖系统/用户指令、隐藏行为、工具描述投毒、中英文隐蔽指令
  • 文件勒索与破坏:递归删除、磁盘格式化、权限破坏、批量加密、赎金文本
  • 凭据与数据外传:环境变量枚举、SSH/云凭据、浏览器数据、secret → network 组合链
  • 供应链:安装生命周期脚本、下载即执行、未锁定依赖、编码载荷
  • 动态执行与越权:eval、shell/subprocess、持久化、自修改、关闭 TLS 校验
  • DSH 元数据:package.json 可解析性和 dsh.bundle.patch 激活声明
  • Unicode 欺骗:零宽字符与双向控制字符

评分按“唯一规则 + 同规则递减贡献”计算,避免大型插件仅因重复匹配就轻易满分。只要出现关键级问题,或多类高危问题组合,结论会直接变为 DO_NOT_INSTALL

安装到 DeepSeek Harness

在本目录生成 tarball,再安装到实际启动 Web UI 的同一个 profile。官方默认 Web UI 通常使用 web profile:

npm pack
dsh plugin --profile web add ./dsh-plugin-guard-0.1.1.tgz
dsh --profile web --dump-config

配置中应出现 id: plugin-guard。然后停止并重新运行 dsh web,再新建对话;新会话会获得 plugin_guard_scan 工具。自定义 profile 用户必须把上述 web 替换成自己实际运行的 profile。DSH profile 彼此隔离,把插件装进 security 不会自动让 web profile 使用它。

Harness 仍处于 developer preview;本项目按 2026-08-18 可见的 @deepseek-ai/dsh RC 插件格式实现。升级 Harness 后应重新运行测试并核对 dsh.bundle.patch、Loader 和 defineTool 接口。

在 Harness 中使用

把待审插件先下载或解压到当前工作区,然后要求 Harness:

使用 plugin_guard_scan 扫描 ./untrusted-plugin,先不要安装或运行它。

工具默认只允许扫描当前 DSH 会话中经过验证的 session.header.cwd,不会使用 DSH 服务进程的启动目录。相对路径从该会话 workspace 解析;没有有效 workspace 时工具会拒绝扫描。需要增加额外的只读扫描根目录时,由用户在启动 Harness 前显式设置:

export DSH_PLUGIN_GUARD_ROOTS="/absolute/review/inbox:/another/allowed/root"

这些目录只会扩展当前会话 workspace,不会启用 process.cwd() 兜底。这个限制用于防止模型把扫描器当成任意文件读取工具。

独立命令行

不安装到 Harness 也能直接扫描:

node ./bin/dsh-plugin-guard.js /path/to/plugin
node ./bin/dsh-plugin-guard.js /path/to/plugin --json

退出码:0 可继续人工审查;1 谨慎;2 不要安装;3 扫描失败。

验证

npm test
npm run check

测试覆盖:干净插件、提示词注入与命令执行组合、凭据外传链、安装脚本、未锁定依赖、会话 workspace 解析、缺失 workspace 时失败、额外根目录和符号链接边界。

安全设计

  • 零运行时扫描依赖;不需要 API key。
  • 目标文件使用 lstat,符号链接直接跳过。
  • 单文件、总字节数、文件数和 finding 数都有硬上限。
  • 二进制文件不解析;被截断或预算耗尽时 scanComplete=false,结论至少为 CAUTION
  • 扫描证据限制长度,避免把大段恶意提示词重新注入模型上下文。
  • 插件工具只隐式信任 DSH 验证过的会话 workspace;CLI 仅扫描用户明确给出的路径。

参考方法

规则分类借鉴 NVIDIA SkillSpector 的两阶段安全分析、OpenClaw/Hermes 社区的提示词与凭据防护实践,以及 Agent Skills 供应链研究。此实现刻意把第一版限定为确定性的本地静态扫描;未来可在隔离进程中增加 AST、依赖漏洞库和可选语义复核,但语义模型绝不能直接服从被扫描内容。

已知边界

  • 不分析图片、加密文件、编译二进制或运行时下载后的真实行为。
  • 正则规则可能误报,也可能被高级混淆绕过。
  • 不联网查询 OSV/CVE;依赖漏洞需要另行使用可信的 SCA 工具检查。
  • 不替代沙箱、最小权限、网络出口控制、人工代码审查和可恢复备份。

发现绕过方式或误报,请先阅读 SECURITY.md

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

TestsDetected
Security policyDetected

Repository information

Language
JavaScript
License
MIT
Last updated
Aug 18, 2026, 8:15 AM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.