独立特征与夹杂特征

深入解析语义分析引擎对攻击载荷形态的判定逻辑、上下文边界识别及 Gadget 隔离保护范围。

在 Web 业务场景中,用户提交的内容形态各异。例如在论坛发帖、博客评论或技术社区中,正常用户经常会引用代码片段或 SQL 查询语句;若简单使用纯特征匹配,极易导致大面积误报。

为了解决这一问题,CheeseWAF 的 AST 语义分析引擎在完成参数多层解码后,会根据载荷的上下文占比与包裹形态,将判定命中标记为独立特征(Isolated Payload)或夹杂特征(Embedded Payload)。

特征形态定义

1. 独立特征(Isolated Payload)

独立特征指参数值的绝大部分内容直接构成了攻击载荷本身,且缺乏合法的业务文本上下文。

  • 典型场景:在登录框或搜索框参数中直接输入 UNION SELECT 1,2,3、' OR 1=1 -- 等。
  • 包裹判定:即使攻击者添加了 @、结尾分号、/{${...}} 或简单前后缀等轻微包装,只要有效载荷占据主要结构,引擎依然将其判定为独立特征。
  • 处置策略:在防护等级 2~5 下,独立特征命中将触发立即阻断。

2. 夹杂特征(Embedded Payload)

夹杂特征指疑似攻击语法的片段嵌入在较长的正常自然语言、技术文章或商品描述等大段文本中。

  • 典型场景:技术论坛帖子中讨论数据库优化并包含了一条示例 SQL,或者文章中讨论 Log4j 漏洞时引用了相关 payload 字符串。
  • 处置策略:在标准防护等级(2~4 级)下,系统采取放行请求并异步投递 ALAP 队列的策略,避免中断正常业务交互;在严格模式(5 级)下,则执行严格拦截。

引擎隔离覆盖范围与工程实现事实

为确保策略的严密性与透明度,以下为当前版本语义引擎针对特征隔离的具体实现边界:

  • 已覆盖 Gadget:隔离分析器专门覆盖了 PHP/JSP 动态 WebShell、Log4j JNDI 注入 以及 短引号/谓词 SQL 注入(针对长度不超过 96 个字符/rune 的短片段)。
  • 形态守卫机制:针对 XSS、系统命令执行(RCE)、服务端模板注入(SSTI)、服务端请求伪造(SSRF) 及 XML 外部实体注入(XXE) 等攻击类型,引擎采用专门的文档形态守卫(Document Shape Guards),独立于短 Gadget 隔离分析器运行。
  • 兜底证据链:被标记为 embedded 的命中在低于 5 级时免除阻断;对于未明确归类的边界命中,系统依然严格遵从 blockableHit 证据判定逻辑,不会默认降级为夹杂特征。
  • 最佳实践建议:特征隔离机制用于降低已知 Gadget 在富文本业务下的误报率,若业务系统完全面向 API 或固定表单交互,建议在关键接口上开启更高的防护等级或针对性 Schema 校验。