主题:语义差异武器化——一 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)——语义差异的
另一种变体:不是"两层理解不一致",而是"一层假装另一层不存在"。

为什么现在高发

  1. 组件分层只增不减:云前置、反代、框架、中间件、业务层,每层引入自己的
    解析器和默认假设;层间没有语义契约,只有"通常没问题"。
  2. 净化/沙箱把显式漏洞封死后,剩下的只有隐式差异:引擎、容器、WAF 的直接
    攻击面在收敛(见 freemarker-jeecgboot-sandbox-escape-aviator——连沙箱内
    都只剩"暴露对象"这种间接缝隙),攻击自然流向层间。
  3. 研究侧已工程化:Novee(4 平台 12 漏洞)、PortSwigger(头注入→完整反同步
    攻击面)输出的是"找缝隙的方法论"而非单点利用,方法论会复制。

方向判断(可证伪)

防御统一推论