dsh-safe-web-fetch:DeepSeek Harness 的 SSRF 防护 WebFetch 插件

前言

DeepSeek Harness (DSH) 的核心能力之一是 web_fetch,它允许智能体通过联网工具获取外部信息。然而,默认的网络请求实现可能存在服务器端请求伪造 (SSRF) 风险,且缺乏对请求内容类型的严格限制。

dsh-safe-web-fetch 是一个 SSRF-resistant WebFetchProvider 插件。它将 safe-http 注册为 DSH 的 ctx.web 服务提供者,在不破坏 DSH 现有工具和 Profile 系统的前提下,提供了一套更严格的网络访问控制策略。

核心功能

该插件通过以下机制增强安全性:

  • DNS 校验:在打开 socket 前检查每个 DNS 答案,包括 IPv4-mapped IPv6 和特殊用途地址范围。
  • 连接隔离:通过隔离的 Undici dispatcher 进行连接,确保地址检查与实际请求绑定。
  • 重定向控制:重检查同源重定向,拒绝跨源重定向。
  • 速率与大小限制:限制响应字节数、解码字符数、重定向次数、并发请求数以及总超时时间。
  • 内容过滤:仅返回文本类媒体类型(text, HTML, JSON, XML)。
  • 隐私保护:不添加 cookies、authorization headers、浏览器状态或请求体。
  • URL 规则:仅接受 HTTP/HTTPS URL,且 URL 中不包含嵌入的凭证。

安装与启用

安装该插件并激活对应的 Profile 层即可启用。

  1. 使用 Next 版本安装:
    dsh plugin --profile safe add dsh-safe-web-fetch@next
安装后,执行 `dsh --profile safe --dump-config` 查看配置是否生效。
  1. 生产环境部署时,建议固定已测试的版本:
    dsh plugin --profile production add dsh-safe-web-fetch@0.1.0-next.0
  1. 也可以安装特定 Git 提交:
    dsh plugin --profile safe add github:MostlyHarmlessxyz/dsh-safe-web-fetch#<commit-sha>

配置

插件提供了一系列可配置的参数,默认值较为保守。

配置项 默认值 最大值
maxUrlLength 2048 16384
maxResponseBytes 5000000 100000000
maxBodyChars 100000 10000000
timeoutMs 30000 Node timer limit
maxRedirects 5 20
maxConcurrentRequests 16 128

此外,还可以配置 allowHosts(允许列表)、denyHosts(拒绝列表)和 userAgent。在 DSH 中,配置行会被完整替换,因此修改配置时需包含所有字段。

- id: safe-web-fetch
  name: dsh-safe-web-fetch
  config:
    maxUrlLength: 4096
    maxResponseBytes: 10000000
    maxBodyChars: 200000
    timeoutMs: 30000
    maxRedirects: 3
    maxConcurrentRequests: 8
    allowHosts:
      - '*.docs.example.com'
    denyHosts: []
    userAgent: my-company-fetch/1.0

适用场景与注意

该插件适合需要在 DSH 环境中执行受限联网操作的智能体开发场景。

注意点:

  • 内容信任:公共地址不等于可信内容。插件不负责处理提示注入、恶意软件或 HTML 清理,这些仍需在应用层处理。
  • 系统级限制:操作系统级别的第三方解析器无法被该插件完全阻止,这是一个已知的安全边界。
  • 功能边界:该插件不添加 cookies、authorization headers、浏览器状态或请求体。
  • 非网关策略:它不是防火墙、内容扫描器、审批屏幕或代理策略。对于组织级零信任网络,仍需在网络边界部署相应的控制措施。

结语

dsh-safe-web-fetch 通过严格的 DNS 校验、连接隔离和内容过滤,为 DeepSeek Harness 提供了基础的 SSRF 防护能力。作为插件生态的一部分,它遵循 DSH “一切皆插件” 的设计理念,开发者可根据 Profile 需求灵活集成。

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

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

小夜