DeepSeek Harness 动态 Cordis 插件静态安全审计插件

前言

DeepSeek Harness (DSH) 的核心理念是“一切皆插件”。在会话中定义的动态 Cordis 插件运行纯 JavaScript 代码,并直接访问真实的 Host 服务(如文件系统、Shell、会话和凭据)。DSH 的沙箱机制主要限制误用,而非作为对抗恶意代码的安全边界。

dsh-plugin-security-audit 插件旨在为这些动态插件添加一层确定性、零 token 的静态审计。它在会话内的每次 cordis_define 或 cordis_run 调用上运行,通过规则引擎扫描源码,并在激活高风险包前进行用户审批,同时将风险报告注入到工具结果流中。

核心功能

该插件主要包含以下能力:

  1. 定义即扫描:在 cordis_define 阶段,插件会利用 16 条规则的引擎扫描 code.host 和 code.client 源码。
  2. 激活把关:对于存在 critical 或 high 级别发现的插件包,cordis_run 会触发用户审批({kind:'ask'}),并附带最高危发现的原因;低风险或干净的包则正常运行。
  3. 报告进对话流:每次调用结果旁会附带一条紧凑的风险报告,通过 additionalContexts 通道发送,模型和用户都能在工具结果流中看到。
  4. Fail-open 设计:审计层内部发生的任何错误只记录日志,被审计的调用继续执行,不会因为审计层的故障而阻断业务。

安装与启用

使用该插件需要 DSH 版本 v0.1.0-rc.6 或更高,且命令行中需包含 dsh plugin 功能。

  1. 安装插件
    通过 npm 或 GitHub 添加插件:
    # 通过 npm 安装(发布后)
    dsh plugin --profile web add dsh-plugin-security-audit

    # 通过 GitHub 安装
    dsh plugin --profile web add github:chendengyuanxm/dsh-plugin-security-audit
  1. 重启 Profile
    安装完成后,需要重启对应的 profile(例如 dsh web),bundle 层会在启动时生效。

  2. 验证安装
    检查配置中是否包含该插件:

    dsh --profile web --dump-config | grep plugin-security-audit
  1. 作为 Agent 预设使用
    若想在特定 Agent 预设中使用,需将 examples/preset/ 目录下的内容复制到用户目录:
    mkdir -p ~/.dsh/.agent-presets/plugin-security-audit/
    cp -r examples/preset/* ~/.dsh/.agent-presets/plugin-security-audit/

工作原理

插件通过监听器注册在组合层作用域上,覆盖 profile/preset 下的所有 agent。其工作流如下:

  1. 预执行扫描:在 cordis_define 和 cordis_run 触发 tools/pre-execute 时,源码被送入扫描引擎(16 条规则,纯函数)。
  2. 结果缓存:扫描结果存入 LRU 100 缓存。
  3. 审批判断:cordis_run 阶段检查是否存在 Critical/High 级别发现。如果是,则将响应类型设为 {kind:'ask'} 并附上理由;否则正常放行。
  4. 后执行通知:在 tools/post-execute 阶段,通过 additionalContexts 通道将风险报告发送给模型和用户。

报告是自有的纯 JSON 对象,不序列化 Cordis 活对象。报告走 additionalContexts 通道,独立于各工具自身的 output.render,不会被工具内容覆盖。

审计规则

审计基于 16 条规则,分为四个主要分组。激活审批的阈值为 critical 或 high。

分组 规则 (id) 级别
危险能力 global-proc — Node process 全局 critical
global-buf — Buffer 全局 high
dynamic-eval — eval / new Function critical
module-load — require() / import 外部模块 high
ctx-bracket — ctx[...] 动态属性逃逸 high
native-timer — setTimeout 等 medium
client-dom — Client 端直接使用 document/window/fetch high
数据外泄 exfil-combo — 敏感源 + 网络出口组合 critical
hardcoded-cred — 硬编码密钥 high
base64-net — base64 + 网络组合 high
Cordis 反模式 live-serialize — 对活对象序列化 high/medium
undeclared-svc — 未声明 inject 访问服务 medium
sensitive-svc — 使用 shell/subprocess/fs/web/credentials high
effect-no-dispose — ctx.effect 无清理函数 medium
越权面 rpc-live-obj — RPC 返回活对象 medium
shadow-slot — 注册高风险覆盖型 Slot medium

局限与注意事项

  1. 静态匹配局限:基于静态模式匹配,无法识别意图级或多步混淆攻击。CLEAN 结论仅表示“未命中规则”,绝不等于“证明安全”。
  2. 不硬阻止:审计层不会硬性阻断调用,仅触发审批。critical+high 的发现会触发审批,但调用本身仍会执行。
  3. 进程内运行:报告仅在当前进程内有效,不涉及持久化存储或历史记录 UI。
  4. 运行权限:插件以当前 DSH 进程的权限运行,在安装前应检查源码与许可证。

总结

dsh-plugin-security-audit 为 DSH 中的动态插件提供了一层额外的安全防护。通过在定义和运行时进行静态扫描,它能够在不增加额外 token 成本的情况下,帮助开发者识别高风险代码模式,并在激活关键插件前获取用户确认。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜