dsh-route-fence-linter:DeepSeek Harness 插件 HTTP 路由安全静态检查工具

前言

在 DeepSeek Harness (DSH) 中,webServer 路由通过最长前缀匹配进行分发,优先于 /api 网关的统一信任检查。这意味着每个插件作者必须自行实现浏览器信任围栏,以防止 DNS 重绑定等攻击,但大多数插件并未实现。此工具用于静态扫描插件代码,找出那些未正确实现围栏的 HTTP 路由。

核心功能

该插件是一个静态 linter,用于检查 DSH 插件的 HTTP 路由安全性:

  • 静态扫描:针对 webServer 注册的路由进行静态分析。
  • Host 固定检查:确保路由在处理 Origin 或 sec-fetch-site 标志之前,先固定 Host 头部为 loopback 或受信任的权威域名。
  • Fallback 检查:检查 registerFallback,防止其作为未围栏的攻击面。
  • 路径指定:支持扫描特定的配置文件路径或 Profile 目录。
  • 引用解析:解析导入和导出,对非相对引用(exports, imports, tsconfig paths)发出警告。

使用方法

安装为 DSH 插件后,通过 CLI 命令运行扫描。

基础扫描

扫描默认的 Web Profile 目录($DSH_HOME/profiles/web):

dsh-route-fence scan

指定路径扫描

扫描指定的 Profile 路径:

dsh-route-fence scan /path/to/profile

退出代码

  • 0:所有检查通过(Clean)。
  • 1:至少发现一个 FAIL。
  • 2:用法错误或 I/O 错误。

判定说明

插件对每个路由输出 PASS、WARN 或 FAIL 等级。

  • PASS:处理程序在 Origin 处理之前,对 Host 头部进行了围栏检查。
  • WARN:在围栏内部,Origin 或 sec-fetch-site 在 Host 固定之前被读取;或者路由定义在扫描包之外,无法读取围栏,需人工确认。
  • FAIL:没有 Host 检查;围栏比较 Origin 和 Host 但从未将 Host 固定为 loopback(可被 DNS 重绑定绕过);或者围栏存在但该处理程序从未调用。
  • SKIP:无法读取源代码的 Bundle,不计入 Clean。

适用场景与注意事项

  • 适用对象:DSH 插件开发者,特别是负责 HTTP API 和 Web 路由构建的开发者。
  • 扫描范围:仅扫描包发布的文件(package.json 的 files 字段),未声明 files 则扫描整个包。
  • 局限性:
    • 基于启发式(源文本分析),而非完整的数据流分析。
    • 无法检查通过包装(wrapping)或运行时配置安装的围栏。
    • 非相对引用(如 package.json exports, imports, tsconfig paths)无法被扫描,结果为 WARN。
    • 可能报告误报(False Verdicts),这被视为 Bug。

结语

该工具帮助开发者快速定位插件中缺失或错误的浏览器信任围栏。建议在开发流程中集成此检查,以消除潜在的安全隐患。更多详情与源码,请访问插件目录或GitHub 仓库。

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

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

小夜