DeepSeek Harness 插件补丁层缺少能力模型

编号
CAVO-2026-0001
类型
Advisory
严重度
高危(8.5)
矢量
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H
状态
已通知
日期
2026-08-14
通知
2026-08-18
对象
DeepSeek Harness(源码审读)
锚定
99f6f02fec
主张
插件补丁层没有能力模型。第三方 bundle 可以静默改写或移除部署的安全控制,安装者在安装时与安装后都无从知情。唯一的完整性校验由补丁作者自愿触发,省略即绕过。缺陷落在厂商的补丁层设计,不落在用户是否谨慎。
证据

行号锚定 99f6f02fec。下列位置可在公开源码中直接核对。

事实位置
patch 把除 id / insert / name 外的任意字段直接写入目标行,无白名单,无受保护行vendor/include/src/index.ts:121-124
仅当补丁声明了 name 才比对包名;不写则检查不执行vendor/include/src/index.ts:116-119
disabled 的行不会 init,等于移除该控制vendor/loader/src/config/entry.ts:126
安全行 id 稳定且公开:sandbox、sandbox-policy、approval、permissionpackages/bundle/base/cordis.patch.yml:169-205
后加载的 bundle 按 id 整行覆盖;层序由 dsh.profile.bundles 决定packages/bundle/base/README.md:5;packages/boot/app-boot/src/profile.ts:11-13
dsh plugin add 是包管理器薄转发,无签名、完整性或权限审核apps/cli/src/plugin.ts:3-5
矢量说明
取值含义
攻击向量本地要能往这台机器装 bundle
复杂度一份 YAML 补丁即可
权限补丁作者对目标无需已有权限
用户交互需要受害者得执行安装
范围改变被摘掉的是管其他组件的控制
机密 / 完整 / 可用审批和沙箱去掉后,以该用户身份读写执行
结论

DeepSeek Harness 用多层 bundle 组合运行配置。后加载的层可以按 id 覆盖先加载层里的同一行,包括审批与沙箱这类安全控制。这是公开文档里写明的组合规则,但补丁层没有配套的能力模型:不区分哪些行受保护,也不在安装时向操作者展示差异。

补丁层仅有的完整性检查是:当补丁自己写了 name 字段,才核对包名。省略该字段,检查不会执行。因此防护能否生效,取决于补丁作者是否愿意被检查。

影响

任何会把第三方或社区 bundle 写进 profile 的部署都在范围内。一次常规的插件安装就可能关掉审批,或把沙箱策略改宽。组合发生在配置层,不依赖安装脚本,包管理器拦截构建脚本的默认策略挡不住这条路径。

本条已在隔离环境中用官方配置导出核对过:后加载 bundle 可以改写上述安全行,且不会出现包名不匹配的提示。复现材料与利用细节在厂商收到通知之前不公开。

前提

利用需要操作者把第三方 bundle 装进 profile。默认层序里,后装的包排在 base 之后,正好覆盖安全行。补丁不写 name,完整性检查不会跑。不需要 postinstall,也不需要目标机上已有权限。

眼下可以做的

在厂商给出修复或官方说明之前,部署侧可以先收紧安装面。

  • 不要把未审过的第三方 bundle 写进生产 profile。
  • 把插件安装当成特权操作:安装前后导出配置,核对审批与沙箱行有没有被改写。
  • 生产环境固定 bundle 清单,避免运行时临时加包。
定级

Cavo 定级为高危。依据 CVSS 3.1 矢量 AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H,基础分 8.5。需要操作者执行插件安装,所以不是严重;摘掉的是管其他组件的安全控制,范围取 Changed。

若按 Unchanged 计分,得 7.8,仍是高危,结论不翻盘。两种算法都摊开,避免只报对自己有利的那一种。

披露状态

研究完成于 2026-08-14,2026-08-18 在 99f6f02fec(dsh-v0.1.0-rc.7)复核,机制仍在。同日已按产品页公布的地址发至 harness-privacy@deepseek.com,并抄送 security@deepseek.com。复现材料未附。默认窗口 90 天,至 2026-11-16。本条状态为「已通知」。