DeepSeek Harness 企业内网部署风险评估

编号
CAVO-2026-0002
类型
Assessment
状态
已发布
日期
2026-08-14
对象
DeepSeek Harness(源码审读)
锚定
99f6f02fec
F-1 · 沙箱管写,不管读,也不管网络

参考定级 中危7.1)。CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N

文件系统沙箱只给写操作设档。所有模式下读取都放行。网络与进程可见性不在这套词汇里。默认档是 workspace-write。

证据

事实位置
Reads always pass through — every mode permits readingpackages/fs/fs-sandbox/README.md:5
Network and process visibility are outside this vocabularypackages/sandbox/sandbox/src/index.ts:27
默认 sandbox-policy 为 workspace-writepackages/bundle/base/cordis.patch.yml:175

影响

智能体可以读当前用户能读的文件,包括密钥和凭据,出网也不受这套沙箱约束。不可信内容一旦进上下文,就可能驱动读密钥再外发。

前提

进程已在该用户身份下运行。不需要再装恶意插件。这是默认档,不是实现笔误。

F-3 · Web 控制面默认无认证

参考定级 严重9.3)。CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H

Web 服务文档写明:无 TLS、无认证、无来源策略。host 允许 127.0.0.1 或 0.0.0.0。控制面一旦可达,调用方等于以该用户身份执行命令。

证据

事实位置
No TLS, auth, or origin policy;非回环绑定把服务暴露给该网络,加固不在 v1 范围packages/host/webserver/README.md:21
部署默认已带 bash 与文件系统工具,能开会话的调用方就能以本进程身份跑命令packages/client/connection/src/index.ts:100-103
反 DNS 重绑定与跨站有独立闸门,特权方法再钉回环packages/client/connection/src/index.ts:122-126

影响

本机其他进程在 Web UI 开着时即可驱动智能体。若绑定 0.0.0.0 或做了端口映射,同网段可达即暴露。参考分按默认本机可达计为 9.3;邻接网络暴露升至 9.6。分数高是因为默认可达且无交互,不是因为发现了未声明漏洞。

前提

dsh web 正在运行。默认绑回环时,攻击者需要本机执行能力。绑定非回环后,前提变成网络可达。

F-4 · 子进程凭据擦洗按名字猜测

参考定级 低危3.3)。CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N

派生子进程时,环境变量擦洗靠名称正则匹配常见密钥词。用连接串或证书路径命名的变量不在词表里,会被原样带进子进程。

证据

事实位置
SENSITIVE_ENV_PATTERN = /KEY|PASSWORD|SECRET|TOKEN/ipackages/subprocess/subprocess/src/index.ts:44

影响

DATABASE_URL、REDIS_URL、MYSQL_PWD、SSH_AUTH_SOCK、GOOGLE_APPLICATION_CREDENTIALS 这类名字会漏过。子进程或工具若被诱导读环境,可能看到这些值。这是加固项。

前提

父进程环境里已有这类变量,且会派生子进程。不能单独远程触发。

摘要与范围

这不是漏洞公告。F-1、F-3、F-4 写在厂商自己的 README 和源码注释里,是默认档和部署选择。本评估面向决定要不要把 DeepSeek Harness 铺进内网的人:把散落在多个包里的语义收成一份可签字的风险说明,并给出先收哪几步。

审读对象是本地源码树,锚定 99f6f02fec(dsh-v0.1.0-rc.7)。中招体检无命中。各条参考矢量写在正文,清单总行不标 CVSS,避免评估被看成三条漏洞公告。

依赖面:无产品可达高危

包审计报出 38 条,其中高危 15 条。逐条核产品运行时加载路径后,没有一条构成可达高危。命中项落在 vitest / jsdom / eslint 测试链,或落在未被加载的依赖子路径上。会进入产品运行时的配置解析库,问题是特定输入下的 CPU 消耗,来源是用户本机配置,影响低。

本评估不把那 15 条高危写进问题清单。只报版本号、不核代码路径,是另一种不诚实。

对方做得好的地方

凭据文件本身扎实:创建和替换强制 0600,非属主可读会在读入前拒绝启动,报错不回显值。见 packages/credentials/credentials-local/src/index.ts:87-96。那道防线防的是同机其他系统用户,不防智能体自己。

Web 控制面的反 DNS 重绑定与跨站有独立闸门,特权方法再钉回环。残余风险是「没有认证」,不是跨站能直接打进来。

内网部署加固清单

按优先级,正好对上上面三条和 CAVO-2026-0001。

  • 不要把 Web 绑到 0.0.0.0。需要远程访问时,前面加带认证的 TLS 反代(F-3)。
  • 不在用的时候关掉 dsh web。回环也不是本机多进程环境下的安全边界(F-3)。
  • 保持默认 workspace-write,不要把会话或默认档改成 danger-full-access(F-1)。
  • 跑 harness 的系统账户与个人凭据、云密钥隔离。智能体读的是该用户能读的一切(F-1)。
  • 第三方 bundle 走白名单。安装前后用官方配置导出核对审批和沙箱行(CAVO-2026-0001)。
  • 不要指望子进程环境擦洗。该进密钥库的不要放在 DATABASE_URL 这类名字里(F-4)。