Repository navigation
Releases: Anguis-L/dsh-plugin-trust-audit
Releases · Anguis-L/dsh-plugin-trust-audit
Release list
v0.3.0 - 加静态鉴权预检,修掉一个假阳性
修了什么
0.2.0 只靠网络探测判定。我用另一个一次性脚本读代码时,只搜了 requestRejection / connection.admit,
就把 Ebony-Vinyl/dsh-our-free-model(42k★)报成「2 条路由无鉴权」—— 错的。
它用的是 rejectionFor(req, fenceConnection, …),另一种写法,实际有 18 处鉴权代码。
假阳性比漏报危险:它会把一个做了防护的维护者公开点名成"不在意安全"。
新增
每条路由附带静态证据:
staticEvidence: {
fenceHits: 6,
lines: [
"L1020: const fenceConnection = connectionAdmissionView(() => optional('connection'))",
"L1063: const logAdmissionRejection = surface => ({ status, source, reason }) => {"
],
caveat: '静态代码里发现了鉴权实现,但网络探测未看到 401/403。…'
}
两条设计规则
- 白名单宁宽勿窄 —— 漏报只是少报一个,误报会伤害无辜维护者
- 静态证据只能软化判定,不能硬化 —— 网络看到
open时verdict不变,
只多带一条提示,因为探测路径可能没命中真正受保护的端点
顺带收紧
authorize / isAuthorized 会匹配到 authorized: false 这种会话对象数据字段,
把命中数从 6 虚涨到 15,证据反而没法看。现在只认 isAuthorized( 这种调用形态。
实测:收紧后 our-free-model 6 处命中,每一条都是真鉴权代码。
v0.2.0 - 自动发现路由,不再猜路径
0.1.x 探的是两条硬编码路径,其中一条根本不存在 —— 一半的报告是编的。
0.2.0 从已装插件的代码里读出它们真正注册的路由:
- 匹配任何别名 .register({kind, path, handler}),不只 webServer.register(实际代码普遍先起别名)。实测:严格匹配 1 条,放宽后 3 条。
- prefix 路由展开探测 /status 与 /config。实测 /api/bili-duty 返回 404,而同一插件的 /api/bili-duty/status 返回 200 无凭据 —— 只探前缀根会把敞开的接口报成无风险。
- 报告带 source 字段(discovered/explicit/fallback),fallback 会附 caveat,避免把不完整扫描当成完整审计。
v0.1.1 - 修复安装被拒(package.json 带 BOM)
修复:v0.1.0 的 package.json 被 PowerShell 写入了 UTF-8 BOM,导致 dsh plugin add 报 SyntaxError 并拒绝安装。v0.1.1 已去除 BOM,并去掉 private 标记、补上 repository 元数据。
v0.1.0 - DSH 插件路由信任审计
只读审计 DSH 端口上插件的 HTTP 路由是否真的做了鉴权栅栏。本插件不发写请求、自己不开任何 HTTP 路由。