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 reading | packages/fs/fs-sandbox/README.md:5 |
| Network and process visibility are outside this vocabulary | packages/sandbox/sandbox/src/index.ts:27 |
| 默认 sandbox-policy 为 workspace-write | packages/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/i | packages/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)。