☰
CVE-2026-16723 有哪些规避措施?升不了 fastjson 1.2.84 时的缓解办法,以及三个没用的做法
2026/10/9 7:54:35 网站建设 项目流程

先给结论

如果你在用 fastjson1.2.68 ~ 1.2.83,CVE-2026-16723 这个 RCE在默认配置下就能触发。处置的正确顺序只有一个:

  1. 能升级就升 1.2.84—— 这是唯一的根治,成本也最低。
  2. 暂时升不了,就启用官方的SafeMode(有代价,下面讲)。
  3. 千万别只做「把某个危险类加进黑名单」这种事,它挡不住。

下面把三个最常见、也最容易白忙一场的误区拆开讲。

误区一:「我没开 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/

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询