CVE-2026-16723 有哪些规避措施?升不了 fastjson 1.2.84 时的缓解办法,以及三个没用的做法

发布时间:2026/10/9 7:54:35
CVE-2026-16723 有哪些规避措施?升不了 fastjson 1.2.84 时的缓解办法,以及三个没用的做法
先给结论如果你在用 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.safeModetrue或在代码里: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.safeModetrue)全局禁用 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/