CSSA 独家预警9.8 超危
fastjson2 autoType白名单校验缺陷导致远程代码执行
漏洞源于fastjson2在默认配置下未启用SupportAutoType时,其AutoType禁用校验分支仅使用FNV-1a增量哈希与默认接受哈希进行前缀匹配,命中后不再回校输入文本是否等同于白名单类名。攻击者可通过对任意前缀构造FNV chosen-prefix哈希碰撞,将jar:/file:/http:等URL形态类型名注入到JSON请求体的@type字段,使字符串被应用的上下文类加载器加载并解析,最终在服务端触发任意远程代码执行;漏洞利用无需鉴权、无需用户交互、无需目标系统存在已知危险类,仅需攻击者控制JSON请求体。
组件
fastjson2是阿里巴巴开源的高性能Java JSON序列化与反序列化库,其架构采用流式解析与增量哈希校验机制,核心能力涵盖对象映射、类型自动推断及AutoType安全策略管控,该组件通过标准化接口支撑高并发业务场景下的数据交换,旨在为分布式系统与微服务架构提供低延迟、高吞吐的结构化数据编解码能…
类型
Deserialization of Untrusted Data (CWE-502)
仓库
github.com/alibaba/fastjson2 · Star 4343
处置建议
- 参考 PR #7695 补丁;补丁在 ContextAutoTypeBeforeHandler 与 ObjectReaderProvider 中新增 acceptNameSet 白名单文本回校,且在类型名包含 ':' 或 '!' 时直接拒绝,从而杜绝 FNV chosen-prefix 哈希碰撞绕过;临时缓解可通过启用 SafeMode(JVM 参数 -Dfastjson2.parser.safeMode=true)或改用 noneautotype 版本完全禁用 AutoType,并在 WAF 层拦截请求体中键包含 @type 的 JSON 数据;同时建议对反序列化输入实施严格类型白名单、下线不必要的类加载路径,并结合安全监控(RASP、DAST)对可疑 @type 载荷进行持续检测。


