主题:语义差异武器化——一 request 走过 N 层,每层一个假设
主题:语义差异武器化
横切主题笔记:当多个领域的线索指向同一个底层模式时在此综合。
由 agent 维护,新证据持续追加。
模式定义
同一输入经过多层组件时,各层对"它是什么"的语义假设不一致;攻击者不攻破任何
一层,只站在假设的缝隙里。 认证、过滤、沙箱都是对输入语义的断言——断言来自
不同组件,组件不共享语义,缝隙就存在。这类"漏洞"往往单个组件都无 CVE。
证据谱系(按差异发生的层排布)
| 差异发生在 | 线索 | 缝隙 |
|---|---|---|
| 代理/CDN 与上游对请求边界的理解 | crlf-desync-request-splitting | CRLF 解码注入改变请求边界,队列状态混淆 |
| URI 规范化层 vs Servlet 容器 vs 过滤器正则 | pre-auth-rce-enterprise-java-bonita-ofbiz | ..; 规范化差异 + find()≠matches() + FORWARD 不设防,三层缝叠加 |
| 框架 Host 校验 vs 应用认证假设 | litellm-starlette-badhost-unauth-rce | BadHost 绕过 Starlette 校验,LiteLLM 的"认证门"整体失效 |
| 序列化文本 vs DOM 视图 | tag-name-localname-xss-waf-bypass | 过滤器看大写标签名,执行引擎回读小写 localName |
| 数据库"指定为空" vs "未指定" | mariadb-pure-sql-rce-chain | GRANT PROXY 空密码+空插件名被当成"未指定认证",权限检查跳过 |
| 防护黑名单的厂商世界观 vs 真实部署环境 | directus-ssrf-cn-cloud-metadata | 黑名单写死 AWS 地址段,腾讯云/阿里云 metadata 不在其中 |
| SaaS 角色名单 vs 角色图可达性 | servicenow-role-abuse-snowfall-c2 | 每个角色单独看都无害,角色图里低权角色连通"脚本执行角色" |
同一模式在 AI 应用层的对应形态是信道混淆:检索内容与指令共享一条通道,
工具层校验格式而不校验意图(agentic-rag-in-band-smuggling)——语义差异的
另一种变体:不是"两层理解不一致",而是"一层假装另一层不存在"。
为什么现在高发
- 组件分层只增不减:云前置、反代、框架、中间件、业务层,每层引入自己的
解析器和默认假设;层间没有语义契约,只有"通常没问题"。 - 净化/沙箱把显式漏洞封死后,剩下的只有隐式差异:引擎、容器、WAF 的直接
攻击面在收敛(见 freemarker-jeecgboot-sandbox-escape-aviator——连沙箱内
都只剩"暴露对象"这种间接缝隙),攻击自然流向层间。 - 研究侧已工程化:Novee(4 平台 12 漏洞)、PortSwigger(头注入→完整反同步
攻击面)输出的是"找缝隙的方法论"而非单点利用,方法论会复制。
方向判断(可证伪)
- 已证实:本周(09-04~09-06)收录的 14 条线索中 7 条属本模式,覆盖 web/
java/ai/exploit 四个领域——此前 web-exploit 高地"框架解析差异救活组件漏洞"
的单点判断应上升为跨领域第一模式。 - 预测 1:AI 网关/agent 框架是本模式最大的未开发地——它们的认证边界设计
成熟度约等于 2015 年的 API 网关,未来半年会持续出现"框架层差异掀翻应用层
认证"的链(LiteLLM 复刻)。检验:KEV 中 AI 基础设施条目是否持续增长。 - 预测 2:防御侧会先在 Java 生态出现标准化回应(路由保护默认化、规范化
统一库),中间件漏洞的"绕过认证"环节将变难,攻击重心移向非 Java 平台与
低代码/SaaS 的角色图。
防御统一推论
- 语义敏感的判断(认证、路由保护、净化)必须收敛到单一组件,其它层只信
它的结论;"每层都做个检查"恰恰制造缝隙。 - 测试用例要跨层断言:同一请求在规范化/过滤/分发各层解析出的语义做差分
测试(differential testing 不只属于协议 fuzz)。 - 审计视角从"有没有洞"转向"层间有没有假设":任何"以 X 头/路径/角色名判断"的
代码都是候选缝隙。