流量处理路径与两阶段流水线
深度解析同步检测转发链路的两阶段流水线架构(Pre-Filters 预筛选 + 语义 Worker 线程池)与响应交付后的异步 ALAP 旁路研判链路。
CheeseWAF 的流量处理链路分为同步检测链路与异步旁路研判链路两大部分。系统在同步链路中采用了独特的**两阶段流水线(Two-Phase Pipeline)**架构,兼顾极端高并发下的微秒级快速阻断与复杂语法树解析的高吞吐:
flowchart TB
Client[客户端请求] --> Ingress[网络接入层 HTTP / HTTPS / HTTP3]
subgraph Phase1 [Phase 1: 预筛选器链 Pre-Filters (顺序执行 / 短路阻断 / 优先级 < 290)]
IP{IP / 地理位置 / 软指纹} -->|放行| Bot{Bot 挑战 / 限流 / 排队室}
Bot -->|放行| Rules{自定义规则引擎 Priority 250}
end
Ingress --> IP
IP -->|命中黑名单| Block[返回拦截页]
Bot -->|触发挑战| Challenge[验证码校验 / 排队等待]
Challenge -->|挑战通过| Rules
Rules -->|命中阻断规则| Block
subgraph Phase2 [Phase 2: 语义分析组 Semantic Group (Worker 线程池并发 / 确定性合并 / 优先级 >= 290)]
Sem[AST 语义分析引擎: SQL / XSS / RCE / LFI / NoSQL / SSTI 等]
end
Rules -->|无阻断| Sem
Sem --> Shape{特征形态判断}
Shape -->|独立特征 2~5 级| Block
Shape -->|夹杂特征 5 级| Block
Shape -->|夹杂特征 2~4 级| Pass[放行并投递异步队列]
Shape -->|无异常| Origin[转发至上游源站]
Pass --> Origin
Pass -.-> Queue[ALAP 异步审查队列]
Sem -.->|5 级阻断样本| Queue
Queue --> LLM[调用配置的大语言模型]
LLM --> Review{研判判定}
Review -->|高危 / 严重| Rule[沉淀为长期规则]
Review -->|低危 / 误报| Dismiss[归档忽略 / 加入白名单]
Rule -.-> IP两阶段流水线设计(Phase 1 与 Phase 2)
为了在生产高流量下保障服务时延确定性,CheeseWAF 的请求检测流水线在内存中将所有注册的检测器按 Priority 分离为两个截然不同的执行阶段:
1. Phase 1:Pre-Filters 顺序预筛选器(优先级 < 290)
- 涵盖范围:IP 黑白名单与地理围栏、Bot 挑战与防刷识别、分片滑动窗口限流,以及 自定义正则规则引擎(Priority 250)。
- 执行特性:单线程顺序执行,对执行顺序极度敏感。
- 快速短路机制:任意前置检测器判定为
ActionBlock时,请求将立即被短路拦截并终止流水线,绝对不进入昂贵的 AST 语法树解析阶段。这使得针对已知敏感路径、特定扫描特征的大规模扫描流量在毫秒级内被拦截丢弃。
2. Phase 2:Semantic Group 并发语义分析组(优先级 >= 290)
- 涵盖范围:SQL 注入、XSS 跨站脚本、RCE 命令注入、LFI 文件遍历、NoSQL 注入、SSTI 模板注入、SSRF 以及 XXE 等深层语法分析器。
- 执行特性:
- Worker 协程池并发调度:系统维护全局共享的 Worker 协程池(上限为 8 协程),入站请求将各项语义分析任务并发推入任务队列并行分析。
- 请求上下文隔离(Forked Context):每个检测器在独立的 Fork 上下文中运行,向元数据和检测结果写入数据时互不干扰,在架构上杜绝并发数据竞争(Data Race)。
- 确定性优先级合并:所有并发检测器执行完成(或超时)后,系统严格按照既定的优先级序号执行稳定合并,确保威胁评估结果与日志记录在任何并发环境下均保持 100% 幂等。
流水线超时与预算控制(Budget Protection)
- 100ms 硬超时防线:整个流水线设有全局 100ms 硬超时时钟,防止复杂畸形载荷将 WAF 进程长时间卡死。
- 分析预算耗尽策略(
budget_exhausted_policy):当请求体异常巨大或语法树分析在超时窗口内未能完整结束时,系统将触发安全兜底策略:auto:遵循全局web_attack防护策略等级映射兜底动作。open:以业务可用性为先予以放行(记录指标)。observe:仅记录观察日志,不执行硬阻断。closed:安全优先,触发人机挑战或严格拦截。
- 过载保护(Guard Overload):底层内置基于协程管程与信号量的过载防护,当极端并发导致分析队列溢出时主动触发
ErrDetectionOverload,保障主服务进程的高可用与自愈。
异步旁路研判链路(ALAP Loop)
异步链路完全独立于实时转发流程,在客户端完成响应接收后于后台触发:
- 样本投递:在防护等级 2~4 下被放行的夹杂特征样本,以及在等级 5 下被阻断的高危样本,均会被投递至 ALAP 审查队列。
- 模型智能分析:后台 Worker 异步调用大模型提取攻击意图并输出置信度评估。
- 闭环规则沉淀:人工审核可将确认样本转换为所选的载荷、URI、IP 或指纹规则;站点级自动采纳范围更窄,仅写入该站点的自定义载荷规则。