dsh-egress-guard: DeepSeek Harness 运行时安全网关

前言

DeepSeek Harness (DSH) 的生态插件通常在智能体运行前扫描配置文件。dsh-egress-guard 位于工具执行流水线中,针对工具调用本身进行安全检查。它通过三个扩展点工作:执行前的出口主机白名单、执行后的密文脱敏,以及全量的追加式审计日志。

核心功能

dsh-egress-guard 作为运行时安全网关,具备以下能力:

  1. 出口主机白名单(pre-execute):在工具执行前检查网络目标。若目标不在允许列表中(例如向不明站点发起 curl 或未知的 git push),则进行拦截或询问。
  2. 密文脱敏(post-execute):在结果返回给模型或持久化会话之前,重写结果中的敏感信息。
  3. 追加式审计日志(JSONL):记录每一次决策,包括 monitor 模式下仅审计而不阻断的决策。
  4. 实现方式:基于文档化的扩展点监听,无 forking,无修补循环。

安装与启用

安装插件不会破坏现有工作流,默认处于 monitor 模式:

dsh plugin --profile <name> add dsh-egress-guard

默认配置中 mode: monitor,这意味着规则会被评估并记录,但不会阻断或重写任何内容。确认审计日志符合预期后,可在 cordis.patch.yml 中启用强制模式。

配置说明

配置文件位于插件的 cordis.patch.yml 中。安装后,请在你的配置中完整覆盖 id: egress-guard 的 config 节。

基础配置项

配置项 默认值 说明
mode monitor monitor 仅审计;enforce 阻断并脱敏;off 不注册任何规则。
egress.allowHosts [] 允许的主机列表,支持通配符(如 *.github.com)。空列表意味着仅使用黑名单。
egress.denyHosts [] 永久拒绝的主机列表,优先级高于 allowHosts。
egress.allowLoopback true 允许 localhost、127.0.0.0/8、::1 等回环地址。
egress.onViolation deny 违规时的动作。deny 直接拒绝;ask 请求批准(若未挂载批准服务则降级为 deny)。
redact.builtins true 自动脱敏内置模式(私钥、API Key、JWT、Bearer Header 等)。
redact.extraPatterns [] 额外的正则表达式源,用于匹配自定义格式的密文。
redact.placeholder [redacted:{name}] 脱敏后的占位符,{name} 为匹配到的正则名称。
audit.path $DSH_HOME/egress-guard.jsonl 审计日志的本地路径。
audit.logAllowed false 记录通过检查的调用。开启此选项可用于从真实流量构建白名单。

示例配置

- id: egress-guard
  config:
    mode: enforce
    egress:
      enabled: true
      allowHosts: ['*.github.com', '*.npmjs.org', 'api.deepseek.com']
      denyHosts: []
      allowLoopback: true
      onViolation: deny
    redact:
      enabled: true
      builtins: true
      extraPatterns: []
      placeholder: '[redacted:{name}]'
    audit:
      enabled: true
      path: ''
      logAllowed: false

典型用法:从日志构建白名单

在启用 audit.logAllowed: true 并运行一段时间后,可以通过以下步骤分析实际访问的主机并生成白名单:

  1. 安装插件并保持 monitor 模式运行。
  2. 修改配置启用 audit.logAllowed: true,记录所有通过的请求。
  3. 分析日志文件,统计访问频率最高的主机:
    jq -r '.hosts[]?' ~/.dsh/egress-guard.jsonl | sort | uniq -c | sort -rn
  1. 将统计出的合法主机添加到 allowHosts,并将 mode 改为 enforce。

局限性与注意事项

  1. 安全边界定位:它是护栏而非围栏。它提高了事故或提示注入的门槛,无法阻止在机器上运行代码的攻击者。
  2. 检测机制:检测基于文本扫描。通过运行时拼接、Base64 编码或十进制 IP 组装的 destination 可能无法被检测到。
  3. 进程级限制:工具若自行打开套接字(除非参数中包含目标地址),网关无法拦截。
  4. 脱敏机制:基于正则模式,可能对非密文产生误判,也可能遗漏未知的密文格式。建议在强制模式前检查审计日志中的误报。
  5. 二进制内容:插件不扫描二进制内容(如图像块)。
  6. 审计日志:日志本地存储且未签名,任何能写入文件系统的进程均可篡改。

兼容性

该插件基于 @deepseek-ai/dsh-tools 0.1.0-rc 流水线契约构建。测试套件运行在 0.1.0-rc.6,并在 dsh 0.1.0-rc.5 环境下进行了四种安装方式的验证。

总结

dsh-egress-guard 通过在工具调用流水线中插入检查点,为 DeepSeek Harness 提供了运行时级别的出口控制和数据脱敏能力。配合审计日志,可以逐步构建安全策略,适合需要在生产环境中控制智能体网络行为与数据泄露风险的场景。

  • 插件目录:https://www.skillhub.cn/plugins/tancheng33/dsh-egress-guard
  • 源码地址:https://github.com/tancheng33/dsh-egress-guard
羽毛球分组比赛记分
小程序二维码

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

小夜