先给结论
如果你在用 fastjson1.2.68 ~ 1.2.83,CVE-2026-16723 这个 RCE在默认配置下就能触发。处置的正确顺序只有一个:
- 能升级就升 1.2.84—— 这是唯一的根治,成本也最低。
- 暂时升不了,就启用官方的SafeMode(有代价,下面讲)。
- 千万别只做「把某个危险类加进黑名单」这种事,它挡不住。
下面把三个最常见、也最容易白忙一场的误区拆开讲。
误区一:「我没开 AutoType,所以我不受影响」
这是最普遍的误解。很多人记得 fastjson 历史上的 RCE 都和 AutoType 有关,于是以为「我没开 AutoType 就安全」。
对这个洞不成立。官方 advisory 的原话是:它在 fastjson 的默认配置下就可被利用,不需要启用 AutoType,也不需要 classpath 上有现成的 gadget。也就是说,你什么都没做、用的就是出厂默认,依然在受影响范围内。
判断自己中不中招,只看一件事:你依赖树里的 fastjson 版本是不是落在 1.2.68 ~ 1.2.83。是,就要处置;和你开没开 AutoType 无关。
顺带:fastjson2 全部版本不受这个 CVE 影响。如果你早就迁到了 fastjson2,这条可以跳过。
误区二:「把那个危险类加进黑名单就行了」
也是常见的「快速缓解」思路 —— 找到 payload 里用到的类,把它加进 fastjson 的 denyList。
官方明确说了:指定目标类不是有效的缓解措施。原因(只讲原理,不展开构造):攻击者可以把 payload嵌套进 Object / Map 类型的字段里,绕过你对某个具体类名的封堵。你堵一个,它换一个包装,黑名单是堵不完的。
官方给的真正缓解是 SafeMode,而不是手工黑名单:
# JVM 启动参数-Dfastjson.parser.safeMode=true或在代码里:
ParserConfig.getGlobalInstance().setSafeMode(true);⚠️SafeMode 的代价要说清楚:它全局禁用 AutoType。如果你的业务里有地方依赖AutoType(比如反序列化时要根据@type还原具体子类),开了 SafeMode 之后那部分会失败。开之前先在测试环境验证业务不受影响,别直接上生产。
官方按顺序给的第三个处置是使用noneautotype构建变体,适合确定完全用不到 AutoType 的场景。
误区三:「Dependabot 没提示我升级,应该问题不大」
这条最隐蔽。这个漏洞的 GitHub advisory(GHSA-crf3-v9rr-v7hj)现在已经是 reviewed 状态、会告警——所以「Dependabot 完全没声音」不太可能。
真正的坑在另一头:这条 advisory 的first_patched_version字段至今是null。意味着即便它告警了,也不会告诉你「升到 1.2.84 就好」。很多自动化工具、也包括一部分人的判断,会因为「没有明确的 fixed version」而把它当成「暂时无解、先放着」。
这是工具元数据的毛病,不是你的免死金牌。修复版 1.2.84 是实打实存在的(2026-07-29 就上传到了 Maven 中央仓库),只是这条信息没有被同步进 advisory 的结构化字段里。结论:别等工具给版本号,直接升 1.2.84。
正确的缓解顺序(照抄)
| 优先级 | 做法 | 代价 / 前提 |
|---|---|---|
| 🥇 根治 | 升级到fastjson 1.2.84 | 几乎无代价,是最省事的彻底修复 |
| 🥈 升不了时 | 启用SafeMode(-Dfastjson.parser.safeMode=true) | 全局禁用 AutoType,依赖 AutoType 的业务会坏,先在测试环境验证 |
| 🥉 确定用不到 AutoType | 使用noneautotype构建变体 | 同上,需确认业务完全不用 AutoType |
| ❌ 别做 | 只把某个类加进黑名单 | 无效—— payload 可嵌套进 Object/Map 绕过 |
最后一步:先确认自己到底在不在用 fastjson
处置之前得先知道「我用没用、用的哪个版本」。这件事比想象中难:fastjson 常常是被某个上游库间接带进来的,或者被 shade 进了某个 fat-jar,mvn dependency:tree未必查得全。
我写了个零依赖的小工具fastjson-check,直接扫 jar / Spring Boot fat-jar,把嵌套路径和版本一次列出来(1.2.68~1.2.83 标 CRITICAL,≥1.2.84 标 OK)。开源、Apache 2.0:
https://github.com/xiaoqiMikko/fastjson-check
一句话总结
CVE-2026-16723 默认配置就中招,和你开没开 AutoType 无关;能升 1.2.84 就升,升不了用 SafeMode(注意它禁 AutoType 的代价),别指望黑名单某个类。
自己核验,别信我一面之词
- 影响区间 / 状态:
gh api advisories/GHSA-crf3-v9rr-v7hj(看range与first_patched_version) - 修复版存在:https://repo1.maven.org/maven2/com/alibaba/fastjson/1.2.84/