fastjson CVE-2026-16723:你以为没开 AutoType 就安全?默认配置就中招

7 阅读1分钟

一个反直觉的点

fastjson 的 RCE 你大概见过不少,印象里都和 AutoType 挂钩。CVE-2026-16723 打破了这个印象:官方 advisory 写得很直接 —— 它在默认配置下就可被利用,不需要开启 AutoType,也不需要 classpath 上有 gadget。影响 1.2.68 ~ 1.2.83,critical。fastjson2 不受影响。

也就是说,"我没开 AutoType 所以安全"这句话,对这个洞是错的。判断中不中招只看一件事:依赖树里的 fastjson 版本在不在 1.2.68 ~ 1.2.83。

缓解:两个坑先避开

坑一:把危险类加黑名单。 官方明说了指定目标类不是有效缓解 —— payload 可以嵌套进 Object/Map 类型字段,你封一个类名,它换个包装。堵不完。

坑二:等 Dependabot 给版本号。 这条 advisory(GHSA-crf3-v9rr-v7hj)现在是 reviewed、会告警,但它的 first_patched_version 至今是 null —— 告警了也不告诉你升哪个版本。别被"没有 fixed version"误导成"暂时无解",修复版 1.2.84 是实打实存在的。

正确姿势

# 根治:升到 1.2.84(最省事的彻底修复)
# 升不了时,启用官方 SafeMode:
-Dfastjson.parser.safeMode=true

SafeMode 的代价:全局禁用 AutoType,依赖 AutoType 的业务会失败,先在测试环境验证再上生产。确定完全用不到 AutoType 的,可用官方的 noneautotype 构建变体。

先确认自己在不在用

fastjson 常被上游库间接带入、或 shade 进 fat-jar,mvn dependency:tree 未必查得全。零依赖小工具扫 jar / Spring Boot fat-jar 列出嵌套路径和版本:

github.com/xiaoqiMikko…

一句话:默认配置就中招,能升 1.2.84 就升,升不了用 SafeMode(注意它禁 AutoType),别指望黑名单某个类。