大家好,我是R哥。
Fastjson 最近又爆出严重安全漏洞:

还是严重等级,Fastjson 这是修不完的漏洞啊。。
Fastjson 是阿里巴巴开源的高性能 Java JSON 序列化/反序列化库,广泛用于 Java 对象与 JSON 之间的相互转换。Fastjson 1.x 版本已于 2024 年停止维护,当前最新版本为 2.0.64。
这次的问题,主要出在 Fastjson 的反序列化机制上。
简单来说,如果项目使用的是默认配置,没有开启 SafeMode,同时攻击者又能控制传给 Fastjson 的 JSON 数据,就有机会构造一段恶意内容,利用 Fastjson 自己的反序列化逻辑,最终执行任意代码。
比较麻烦的是,这次漏洞和以前不太一样。
以前很多 Fastjson 漏洞都需要依赖某些特定的 gadget 类,所以把这些危险类删掉或者禁掉,还能起到一定的防护作用。
但这次属于 “gadget-free” 的利用方式,也就是说,它不需要依赖这些特定类就能完成攻击。
所以,过去那种靠删除危险类来规避风险的方法,这次基本就不管用了。
受影响版本
| 条件 | 说明 |
|---|---|
| fastjson 版本 | 1.2.68 – 1.2.83 |
| 配置 | AutoType OFF + SafeMode OFF(即默认配置) |
| 部署方式 | Spring Boot 可执行 fat-jar |
| JDK | 8 / 11 / 17 / 21 均验证 |
| Spring Boot | 2.x / 3.x / 4.x 均验证 |
| 入口 | JSON.parse、JSON.parseObject(String)、JSON.parseObject(String, Class) 均可达 |
主要影响的是 Spring Boot 可执行 fat-jar 包 部署方式,Spring Boot 项目赶紧自查。。
Fastjson 2.x 默认配置不受影响,fastjson2 从架构层面已经规避了这次漏洞。
Fastjson 2.x 不再通过用户可控的类名进行资源探测,也不会因为 @JSONType 注解绕过类型校验。同时,类型解析采用白名单优先机制,只有明确允许的类型才能通过。
另外,fastjson2 默认关闭 autoType,SupportAutoType 也已经被废弃并标记了安全风险。
修复建议
对于 Fastjson 1.x,建议优先升级到 1.2.84,如果暂时无法升级,也可以启用 SafeMode,或者切换到 noneautotype 版本。
长期来看,更推荐直接迁移到 fastjson2,fastjson2 从架构层面已经规避了这次漏洞,而且默认配置更安全。
但 fastjson2 也需要注意的是:
- 不要显式开启已经废弃的
SupportAutoType; - 如果确实需要 autoType,使用
ContextAutoTypeBeforeHandler配置严格白名单。
所以,Fastjson 1.x 能升级就升级到 1.2.84,最好迁移 fastjson2,fastjson2 默认不受此次漏洞影响。
庆幸,Spring Boot 默认使用 Jackson 作为 JSON 序列化和反序列化框架,并不依赖 Fastjson,我个人也没有使用 Fastjson,不然会修不完的漏洞。
如果你们 Spring Boot 项目用到了 Fastjson,赶紧自查升级吧。
好了,今天的分享就到这里了,后续R哥也会继续关注并分享更多的 Java 技术资讯和干货,关注公众号Java技术栈第一时间推送。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。



