DeepSeek Harness 审计插件:核查 HTTP 路由是否真正做了鉴权栅栏

前言

在 DSH 插件生态里,一个插件可以在浏览器 HTTP 载体上注册自己的前缀,而路由分发采用「最长前缀优先」策略。这意味着,比内核 /api 更长的插件前缀会先于内核的准入检查执行,于是这条路由是否需要凭据完全取决于插件自己实现。

社区里的两个样本结论相反:dsh-our-free-model 用 connection.requestRejection 拦住未授权请求(返回 401),而 dsh-bili-scroll 2.0.4 只做了结构化栅栏(放行 200)。从目录页面看不出来装的是哪一种。本插件把它变成可测量的。

这是什么

anguis-l/dsh-plugin-trust-audit 是 DSH 的只读审计插件,由 Anguis-L 维护,分类为 admin-security。它通过探测已安装插件真正注册的 HTTP 路由,判断这些路径是否真的做了鉴权栅栏(fenced / open / absent / unknown)。

核心功能

判定口径

对每个候选路径发三组只读 GET 探测,每组回答不同的问题:

探测 头 回答什么
无凭据 无 裸奔的调用者能不能拿到数据
跨端口 Origin Origin: http://127.0.0.1:65535 本机别的端口上的页面能不能驱动它(只比主机名、不比端口时会放行)
跨站 Origin Origin: https://example.invalid 外部网页能不能驱动它

判定:

状态码 判定 含义
401 / 403 fenced 栅栏生效
2xx open 无鉴权可达
404 absent 没注册路由,不构成风险
其它 / 超时 / 连不上 unknown 不等于安全

自动发现路由(0.2.0 起)

0.1.x 探的是两条硬编码路径,其中一条根本不存在。0.2.0 改成从已安装插件的代码里读出它们真正注册的路由:

  • 匹配 <任何别名>.register({ kind, path, handler }) —— 不能只匹配 webServer.register,因为实际代码普遍先起别名
  • 遇到 kind: 'prefix' 会连带探测子路径(/status、/config)
  • 报告里的 source 字段说明路径来源:discovered / explicit / fallback

只读

只发 GET,从不发写请求,所以审计不会改变它正在检查的状态。

安装与启用

# 从 GitHub Release 直链安装(不需要 npm 账号,不需要 git)
dsh plugin --profile <你的profile> add https://github.com/Anguis-L/dsh-plugin-trust-audit/releases/download/v0.1.0/dsh-plugin-trust-audit-0.1.0.tgz

装完重启一次 dsh(bundle 层要重启才组装),然后在会话里直接让 agent 调用 plugin_trust_audit。

典型用法

plugin_trust_audit()                                                  # 自动发现 + 探测
plugin_trust_audit({ origin: 'http://127.0.0.1:61782' })
plugin_trust_audit({ profileDir: 'C:/Users/you/.dsh/profiles/desktop' })  # 指定要扫哪个 profile
plugin_trust_audit({ paths: ['/api/my-plugin/config'] })                  # 只探指定路径

只审计回环地址。对它机地址发起探测属于未授权扫描,本工具不做。

适用场景与注意

适用场景

  • 想确认已安装插件是否真的做了鉴权栅栏
  • 需要了解某个端口上哪些路径是无凭据可达的
  • 希望通过只读探测来评估安全风险,而不改变系统状态

注意事项

  • 判定基于响应状态码,不构成完整安全审计:它不能证明一条返回 401 的路由内部没有别的洞,也不能发现只在特定方法/参数下才触发的问题
  • 自动发现是读代码猜路径,不是运行时注册表查询:路径写得很动态的插件可能扫不到;子路径只探 /status、/config 两个常见名
  • unknown 是三值判定的关键:把”判不了”糊成”安全”,是这里唯一真正危险的结果
  • 在真实宿主上测过:一条没被任何插件注册的路径(比如 /api/nonexistent-xyz)返回的是 401 而不是 404,因为内核自己的 /api 前缀先接住了它。因此 absent 在实践中很少出现

插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。

结尾

本插件的价值在于把”看起来装了插件、有路由”和”真正做了鉴权栅栏”之间的差距变成可测量的数据。同一个端口上,两个插件一个 open 一个 fenced —— 这就是本工具存在的理由。

  • 目录页:https://www.skillhub.cn/plugins/Anguis-L/dsh-plugin-trust-audit
  • GitHub:https://github.com/Anguis-L/dsh-plugin-trust-audit
羽毛球分组比赛记分
小程序二维码

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

Xiaoye