fix(stealth): neutralize disable-devtool auto bootstrap

This commit is contained in:
leeguooooo
2026-03-05 11:11:36 +09:00
parent 19aefb7eb8
commit a71198d591
7 changed files with 158 additions and 7 deletions
@@ -76,7 +76,21 @@ flowchart TD
风险评分的关键不是“拟合某种固定画像”,而是“同一身份在多表面是否自洽”。
### 1.5 作用域绑定:hostname / action / cdata
### 1.5 反调试脚本是独立攻击面,不等同于指纹命中
在高风控站点中,常见一类“主动防御脚本”(例如 `disable-devtool`):
1. 页面启动后检测开发者工具、控制台钩子、调试停顿特征
2. 命中后执行主动处置(`window.close` / `history.back` / 跳转错误页)
这条链路的关键点:
- 它是“反调试执行面”,不是“指纹评分面”的简单子集
- 会表现为“页面自关闭/自跳转”,但根因可能是运行时反调试触发
工程上必须将其与“指纹问题”分层处理,否则容易误判。
### 1.6 作用域绑定:hostname / action / cdata
服务端校验时提供用于绑定业务语义的字段:
@@ -96,7 +110,7 @@ flowchart LR
D --> G["降低跨流程重放收益"]
```
### 1.6 Token 状态机(能力令牌视角)
### 1.7 Token 状态机(能力令牌视角)
从能力令牌视角,token 生命周期可抽象为:
@@ -114,7 +128,7 @@ stateDiagram-v2
设计目标是让“非法路径”快速失败,并且失败类型可被服务端语义区分。
### 1.7 攻击树(高层)
### 1.8 攻击树(高层)
Turnstile 的主要攻击目标可以抽象为:
@@ -171,6 +185,12 @@ flowchart LR
- “执行完整性”是上游条件
- “信号修饰”是下游优化
补充:反调试脚本属于执行控制的一部分。
- 若页面含有主动防御脚本(如 `disable-devtool-auto` 入口),需要把“自动触发入口”与“正常业务脚本”分开处理
- 最小化目标是阻断其自动化处置链路,避免误伤挑战脚本/跨域组件
- 处理边界应是“只抑制高风险触发入口,不重写通用 DOM 语义”
### 2.3 服务端消费控制:把 token 当作能力消费
服务端消费控制的设计关键在于“放行条件定义”,而不是“接口调用细节”。
@@ -228,7 +248,7 @@ Pre-clearance 通过后可产生 clearance,用于后续 WAF 挑战联动。
Turnstile 攻防设计通常按以下优先级推进:
1. 服务端消费语义闭环(真实性 + 作用域 + 绑定 + 单次性 + 时效性)
2. 挑战执行链路完整性(跨域语义保护)
2. 挑战执行链路完整性(跨域语义保护 + 反调试触发面治理
3. 信号一致性(减少跨字段矛盾)
4. 行为时序(降低机械分布)
5. 体验优化(clearance 等摩擦控制)