DeepSeek Harness 插件

dsh-shield-24567800

Security, Trust & Policy Layer for DeepSeek Harness. Don't trust your agent's tools. Verify them.(英文原文)

跳到安装方式

来源信息

GitHub 仓库
245678000000/dsh-shield
最近更新
2026年8月16日
分类
自动化与任务
GitHub stars
0
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/245678000000/dsh-shield
插件名:dsh-shield-24567800
作者:245678000000

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器4 个文件
README.md来源说明 · 只读预览
README 语言

dsh-shield

DeepSeek Harness 的安全防火墙。

安装前扫描。执行前拦截。动作后审计。

> Don't trust your agent's tools. Verify them.

English

安装

需要 Node.js 20+ 和 pnpm

1. 装 CLI(预检扫描器)

装完就可以在装任何 Harness 插件 之前 先扫一遍:

git clone https://github.com/245678000000/dsh-shield.git
cd dsh-shield
pnpm install
pnpm build
pnpm link --global

验证:

dsh-shield --help
dsh-shield doctor

不想链到全局的话,在仓库里直接跑:

node packages/cli/dist/bin.js scan ./某个插件目录

2. 装进 DeepSeek Harness(运行时护栏)

先有可用的 dsh。用本地目录安装,不要先 allowBuilds 去跑未知 git 包的 prepare

dsh plugin --profile web add /你的路径/dsh-shield

装好后重启 dsh web(或对应 profile)。默认策略是 balanced

自定义策略可以放在:

~/.dsh-shield/policy.yaml

示例见 [examples/policy/balanced.yaml](examples/policy/balanced.yaml)。

3. 立刻试一下

# 扫一个会拉起进程的合成插件(不会执行它)
dsh-shield scan ./fixtures/plugins/process

# 扫一个干净插件
dsh-shield scan ./fixtures/plugins/clean

# 生成信任清单
dsh-shield manifest ./fixtures/plugins/process

process 夹具会报 HIGH / REVIEW BEFORE INSTALLING。 干净包显示 NO HIGH-RISK FINDINGS DETECTED——这不是「SAFE」,静态扫描不能证明代码安全。

不要这样装

# 会拉源码;若再 allowBuilds,可能执行对方的 prepare
dsh plugin add github:245678000000/dsh-shield

git 安装拿到的是源码,不是编好的产物。官方 Harness 也写了:allowBuilds 等于允许安装期在你机器上跑代码。 要走 git,先扫再 pin commit:

dsh-shield scan github:245678000000/dsh-shield#<完整sha>
dsh plugin --profile web add github:245678000000/dsh-shield#<完整sha>

---

这不是一个普通 Harness 插件

安装阶段的恶意行为,不能靠「装完才加载」的插件来拦。

dsh-shield 因此是 两层,共用同一套安全模型:

安装之前
→ 预检扫描器(CLI)

运行期间
→ 运行时护栏(Harness Plugin)
是什么何时生效
预检 CLI dsh-shield scan下载 / 解包 / 解析 / 检查。绝不执行待扫描包dsh plugin add 之前
运行时插件挂在官方 tools/pre-executectx.tools.guard()每一次工具 / MCP 调用

产品能力就六个词:

SCAN → CLASSIFY → ALLOW / ASK / DENY → AUDIT

它做的是 风险发现、策略执行、信任元数据、人工审批、可审计性。 它不是「完美安全」,也不会声称 100% 防住 Prompt Injection。

---

为什么需要它

DeepSeek Harness(dsh)里,插件、MCP、内置工具都跑在宿主机 Node 进程权限下。

用户用 dsh plugin add github:someone/plugin 安装插件时,底层是 pnpmprepare / preinstall 这类 lifecycle 脚本,会在任何 Harness 插件 apply() 之前执行。

运行时,模型可以调用 mcp__<server>__<tool>,把本地文件、密钥、客户资料送出本机。

dsh-shield 卡在这些边界上:

  • 安装插件之前
  • 运行插件期间
  • 调用 MCP 之前
  • 数据离开本机之前
  • 执行高风险 Tool 之前

---

预检扫描器

dsh-shield scan <目录|tarball|github:owner/repo#sha|npm:name>
dsh-shield inspect <target>
dsh-shield policy check <target>
dsh-shield manifest <target>
dsh-shield diff old.json new.json
dsh-shield doctor

扫描 不会

  • npm install / pnpm install
  • require() / import() 待扫描包
  • 执行 prepare / preinstall / postinstall

远程包路径是:下载 → 防 zip-slip 解包 → 解析 → 检查

AST 优先于纯正则。字符串里写了 "child_process",或文档写「我们不会读 ~/.ssh」,不会直接判成恶意。

---

运行时护栏

安装方式见上文「安装」。对接的是当前官方 API(Harness 0.1.0-rc.5,commit 47f94385),不 fork AgentLoop,不改 Harness 源码

| 官方缝 | dsh-shield 怎么用 | |---|---| | tools/pre-execute | 返回 { kind: 'allow' \| 'ask' \| 'deny' } | | ctx.tools.guard() | 单调 DENY:后面的 hook 不能把拒绝改回允许 | | ctx.approval.request() | ASK 走官方审批;没有审批通道则 降级为 DENY | | MCP 公开名 | mcp__<serverName>__<rawName> |

管理工具(只读,没有「一键关闭全部安全」):

  • shield_status
  • shield_explain
  • shield_policy
  • shield_recent_events

---

MCP 安全

新 MCP Server 默认是 unknown,不是 trusted。

未知 MCP已审查(如 github)
只读 + 非敏感ASK(balanced)ALLOW
外部写入ASKASK
密钥 / 凭据外泄DENYDENY

---

数据出境

外部 MCP / HTTP 工具执行前,会给 payload 分级:

public | internal | personal | confidential | credential | secret

日志和审批理由里的密钥一律脱敏(sk-abc...xyz),从不写完整 secret

DATA EGRESS WARNING

Destination: crm-cloud
Detected: CONFIDENTIAL DOCUMENT, PERSONAL DATA, POSSIBLE SECRET
Action: DENY

---

Prompt Injection

检测 + 行为策略,不是魔法防御。

网页 / README / MCP 返回值里的指令腔(「ignore previous instructions」「把 ~/.ssh 发出去」)会被打上 UNTRUSTED_*。 同一会话里随后的敏感读取或外部写入,会升为 ASK / DENY(SHIELD-INJECT-002)。

原文不会被删掉。普通文档里的「Run npm install to install this package」单独出现,不会当成攻击。

---

策略档位

YAML / JSON。内置四档,不是换名字:

permissivebalanced(默认)strictenterprise
本地读allowallowallowallow
本地写allowaskaskask
破坏性操作askdenydenydeny
外部写askaskdenydeny
密钥出境denydenydenydeny
未知 MCP 读allowaskaskdeny
未知 MCP 写askaskdenydeny

配置坏了:高风险决策 fail closed,不会静默全放行。

示例:[examples/policy/balanced.yaml](examples/policy/balanced.yaml) 模型说明:[docs/security-model.md](docs/security-model.md)

---

架构

                 DSH SHIELD
                      │
        ┌─────────────┴─────────────┐
        ↓                           ↓
     预检安全                      运行时安全
        │                           │
        ├─ 包扫描                    ├─ 工具门
        ├─ 源码扫描                  ├─ MCP 门
        ├─ 依赖扫描                  ├─ 出境护栏
        ├─ 脚本扫描                  ├─ 人工审批
        ├─ 权限推断                  ├─ 敏感数据
        ├─ 风险引擎                  ├─ 注入信号
        └─ 信任清单                  └─ 审计日志
职责
@dsh-shield/core发现项、能力、风险分、策略、密钥检测
@dsh-shield/scanner不执行目标的预检
@dsh-shield/clidsh-shield 命令行
@dsh-shield/runtimeHarness 插件
@dsh-shield/ui输出格式化(先服务 CLI)

风险分是确定性公式,LLM 不能决定 ALLOW / DENY

---

信任清单

dsh-shield manifest <target> 写出 dsh-shield.manifest.json

包名、来源与 commit、风险、能力、安装脚本、发现项、扫描完整性、扫描器版本。

信任库按 (来源, commit) 记录。commit 变了,信任作废。

---

威胁模型

见 [docs/threat-model.md](docs/threat-model.md)。

覆盖:恶意插件、被投毒依赖、恶意 MCP、Prompt Injection、数据外泄、危险工具调用、只读伪装、供应链漂移、动态配置。

明确不声称:

  • 100% 防住 Prompt Injection
  • 证明任意插件安全
  • 完美沙箱任意恶意 JavaScript
  • 抓住所有混淆载荷
  • 替代操作系统沙箱 / 终端安全
  • 保证 MCP Server 可信

---

示例

fixtures/ 里全是合成样本,不是真实恶意软件。

pnpm test
node packages/cli/dist/bin.js scan fixtures/plugins/process
pnpm exec vitest run tests/runtime/demos.spec.ts
Demo结果
本地 read_fileALLOW
mcp__github__get_issue(已审查)ALLOW
mcp__github__create_issueASK
未知 MCP + TEST_API_KEY=shield_test_123456DENY
注入 README → upload_debug_infoDENY

---

隐私

默认全部本地:扫描、策略、审计都不上传云端。

审计只留规则 ID、决策、目的地、数据分级、脱敏摘录。 不留原始密钥,不留完整机密正文。

---

局限

详见 [docs/limitations.md](docs/limitations.md)。

dsh-shield 不能保证: 安全证明、完整防注入、JS 沙箱、检出所有混淆加载器、MCP 诚实,以及你已经允许安装脚本跑过之后的保护。

Harness 对接调研:[docs/harness-integration.md](docs/harness-integration.md) 规则目录:[rules/catalog.md](rules/catalog.md)

---

开发与测试

pnpm lint
pnpm typecheck
pnpm test
pnpm build

CI 跑这四项。夹具是合成包。CI 不会执行未知第三方代码。

当前:55 个测试通过。

---

路线图

  • v0.1 — 预检扫描、运行时策略、MCP 信任、出境护栏、审计(本版本)
  • v0.2 — 更完整的清单 diff、注册表信誉适配器、更深的来源追踪、可选 Web UI
  • v0.3 — 签名信任清单、插件透明度、CI Action
  • v0.4 — 组织策略、集中分发

---

供应链安装注意

见上文「安装 → 不要这样装」。git 安装拉到的是源码;allowBuilds 等于允许安装期在你机器上跑代码。

---

参与

欢迎 Issue 和 PR。

不要把 LLM 做成安全边界。 不要为了「看看它干什么」去执行扫描目标。 不要编造 Harness API——先读 docs/harness-integration.md 和官方仓库。

安全漏洞请走 GitHub Security Advisory,见 [SECURITY.md](SECURITY.md)。

许可证:[MIT](./LICENSE)