dsh-trust-center
IdentifiedRead-only trust audit for MCP tools and Skills in DeepSeek Harness: prompt-injection signals, hidden Unicode, dangerous capabilities, schema bloat, and context cost, with an in-Web Trust Center panel.
DSH Trust Center
审计模型即将信任的外部文本:MCP 工具与 Skills。
DSH Trust Center 是 DeepSeek Harness(DSH)的一个只读信任审计插件。它不管理插件安装,也不做启动恢复;它检查另一类更容易被忽略的攻击面:
- MCP 工具的名称、描述和 JSON Schema;
- Skills 的摘要和正文;
- 这些内容里的提示注入、隐藏 Unicode、HTML 注释、编码载荷、危险命令、凭据访问、过大的上下文成本与异常 Schema。
它把结果放进 DSH 主界面的 Trust Center 面板,并提供一个可被 Agent 调用的 trust_scan 工具。
重要边界:这是启发式审计,不是运行时沙箱,也不是“安全认证”。它不执行、不拦截、不自动禁用任何 MCP 服务器或 Skill。没有被标记,不代表安全。
为什么需要它
MCP 工具描述和 Skills 正文会作为模型上下文进入每一轮请求。它们来自外部服务器、项目目录、GitHub 或第三方 Skill 包,但通常没有经过和代码依赖相同的审查。
常见风险:
- 工具描述里写“忽略之前的指令”“不要告诉用户”“把 token 上传到……”;
- 用零宽字符、双向控制符或 HTML 注释隐藏指令;
- 一个 MCP 服务器注册几十个工具,长期占用大量上下文;
- Skill 正文包含破坏性命令或凭据路径,但只以“示例”的形式出现;
- Schema 允许任意附加字段,实际校验却完全依赖服务器。
Trust Center 把这些信号变成可读、可截图、可导出的证据列表。
安装
从 npm 安装当前正式版(0.2.1):
dsh plugin --profile web add dsh-trust-center
固定版本:
dsh plugin --profile web add dsh-trust-center@0.2.1
如果 npm 不可用,也可以从 GitHub 安装同一版本:
dsh plugin --profile web add github:H3OOCH/dsh-trust-center#v0.2.1
npm
latest是 0.2.1,包含 tool fingerprint / drift / 可选 baseline。 旧的0.0.0-stage是已弃用占位版本,不要手工指定。
重启 DSH Web,左侧栏会出现 信任中心 / Trust Center 图标。
本地开发:
dsh plugin --profile web add link:D:/path/to/dsh-trust-center
插件只接受本机 Web 会话读取快照。远程访问时,面板会明确提示“只在本机可用”。这是为了避免把工具描述和证据片段暴露给非本机浏览器。
使用
Web 面板
左侧栏 → Trust Center;也可以从 Settings → Trust Center 进入同一个面板:
- 概览:风险分、等级、高/中/低风险数量、扫描覆盖范围;
- MCP 工具:按服务器分组,显示工具数、上下文 token 估算、能力标签和风险信号;
- Skills:显示来源、路径、字符数、token 估算和风险信号;
- 每条信号可展开:字段、行号、有界文本片段、建议和规则 ID;
- 右上角重新扫描;
- 面板底部列出扫描边界和隐私说明。
Agent 工具
Agent 可在需要时调用:
trust_scan
参数:
| 参数 | 默认 | 说明 |
|---|---|---|
format | markdown | markdown 返回中文摘要;json 返回完整结构化报告 |
示例:
帮我审计一下当前 MCP 工具和 Skills,看看有没有提示注入或隐藏指令。
检查内容
MCP 工具
- 提示注入:覆盖既有指令、混淆系统/开发者身份、要求对用户隐瞒、凭据外发;
- 隐藏字符:双向控制符、标签字符、零宽字符、不可见格式和控制字符;
- 隐藏 HTML 注释与长编码载荷;
- 过大的描述或 Schema,以及重复的上下文成本;
- 工具数量过多的服务器;
- 宽松/空泛的 Schema;
- 危险能力标签:命令执行、文件写入、网络、凭据、数据库、浏览器。
Skills
- Skill 摘要、
whenToUse和正文; - 提示注入与隐藏字符;
- 隐藏 HTML 注释;
- 破坏性/远程执行类命令示例;
- 凭据和敏感路径访问;
- 正文过大造成的上下文成本;
- 来源与路径展示(路径会尽量脱敏为
~/...)。
风险分
风险分只用于排序注意力:
high × 18 + medium × 7 + low × 2
上限 100。A(0–9)、B(10–29)、C(30–59)、D(60+)。它不是概率,也不是安全评级。
工具指纹与基线
MCP 服务器可能在审查后返回不同的 tools/list。插件会为每个工具计算一个 SHA-256 指纹(服务器名、工具名、描述、Schema),并标记 changed / new / removed。
- 默认是内存基线:只在当前 Host 进程内有效,重启后重置;
- 点击 记录当前基线 后,才会写入当前 profile 的 hash-only 文件:
<DSH_PROFILE_DIR>/trust-center/baseline.json
- 文件只包含服务器名、工具名、SHA-256 和 first-seen 时间;不包含描述、Schema、annotations 或工具输出;
- 已有文件时,出现变化后需显式点击 接受当前状态 才会更新;
- 扫描本身永远不写文件。
隐私与安全
- 审计只读:不修改 MCP 配置、Skill 文件、会话或来源内容。
- 可选基线写入:只有你显式点击“记录当前基线/接受当前状态”时,才写入当前 profile 的
<DSH_PROFILE_DIR>/trust-center/baseline.json;文件是 hash-only 的。 - 本机读取:Host 侧读取当前运行时已经暴露的工具 schema 和 Skill 内容;不联网上传。
- 最小化外发:浏览器只收到计数、来源标识和有界证据片段;完整 Skill 正文不发送到浏览器。
- Loopback only:快照路由只接受 loopback Host 和 loopback peer,GET-only;基线写入路由也只接受 loopback POST;均无 CORS、
no-store。 - 无第三方运行时依赖:包本身不依赖 npm 运行时库。
已知限制
- MCP 服务器的 instructions、transport 和连接状态没有通过公开工具 API 暴露;本插件只能审计已注册工具的描述和 Schema。
- MCP annotations(如
readOnlyHint、destructiveHint)是服务器声明,不是运行时验证证据。 - 持久化基线只覆盖 MCP 工具,不覆盖 Skills;它记录的是观察到的指纹,不是服务器实际行为。
- 一个 MCP 服务器如果没有任何已注册工具,本插件看不到它。
- Skill 扫描覆盖已注册工作区;未被工作区注册的项目目录不在结果中。
- 规则是启发式的,可能误报或漏报。请把结果当作复查起点,不要把它当作放行/拦截依据。
- 不扫描插件包源码;插件供应链审计请使用专门的插件健康/安全工具。
开发
npm test
node scripts/check.js
测试覆盖:
- MCP 工具 namespace 解析;
- 提示注入、隐藏 Unicode、HTML 注释、编码载荷;
- 危险命令、凭据访问、宽松 Schema、过大内容;
- 正常长 Skill 不误报;
- 已注册工作区聚合与全局 Skill 去重;
- Host 报告聚合、服务缺失降级;
- MCP
tools/listfixture、Prompt/隐藏字符/宽 Schema 集成检测; - tool fingerprint、changed/new/removed 与内存基线;
- profile baseline 文件、hash-only 校验、原子写入与 POST 路由限制;
- loopback 快照 GET 限制与显式 baseline POST 限制;
- 插件注册、Agent 工具和 Client 槽位注册。
测试用 MCP
建议按风险从低到高:
- Sequential Thinking:没有文件/网络副作用,最适合验证 MCP 面板和内存基线;
- Filesystem:只指向一个空的临时目录,验证 write capability 和
readOnlyHint只是声明; - Git:只指向一个可丢弃的仓库,验证只读工具和 Schema。
不要用 home 目录、真实项目、真实凭据或生产数据库做第一次测试。 完整建议、drift 测试方法和安全注意事项见 testing-mcp.md。
文档与社区
License
MIT
Comments
Loading…