Fastjson 1.x 无 gadget RCE 漏洞:终版沦陷且无补丁可修
Fastjson 1.x 曝出无 gadget 高危 RCE 漏洞
安全研究员 Kirill Firsov(安全团队 FearsOff 成员)于 2026 年 7 月 19 日披露了一个新的 Fastjson 远程代码执行漏洞。该漏洞影响 Fastjson 1.2.68 至 1.2.83 全部版本,1.2.83 是 Fastjson 1.x 系列的最终版本。

和之前的 Fastjson 漏洞有什么不同
Fastjson 的反序列化漏洞由来已久,但此前每一次利用都有一道门槛:要么需要 autoType 处于开启状态,要么需要目标应用的 classpath 中存在可用的 gadget 类。
Firsov 披露的这个新漏洞打破了两道防线。根据其描述,攻击者无需依赖 classpath 中的任何 gadget,一个 payload 即可实现远程代码执行,且在 JDK 8、JDK 17、JDK 21 上均复现成功。这意味着此前认为"关闭 autoType 或使用 1.2.83 安全版本即可高枕无忧"的判断不再成立。
Fastjson 漏洞史:一场拉锯战
Fastjson 的安全问题可以追溯到 2017 年。CVE-2017-18349 首次揭示了 autoType 功能的危险性:当 JSON 文档中出现 @type 键时,Fastjson 会实例化对应的 Java 类并调用其方法。autoType 默认开启时,攻击者可通过 JNDI 注入实现远程代码执行,利用门槛极低。
此后是漫长的攻防拉锯:
- 1.2.25 之前:autoType 默认开启。CVE-2017-18349(JNDI 注入 RCE),CVSS 9.8。
- 1.2.25 至 1.2.47:引入黑名单机制拦截已知危险类,攻击者不断发现新 gadget 绕过。
- 1.2.48:修复 autoType 安全检查的绕过路径(CVE-2025-70974 追溯覆盖至此前版本)。
- 1.2.68:引入 SafeMode,彻底关闭 autoType 功能作为终极防御手段。
- 1.2.80 至 1.2.82:CVE-2022-25845,通过 Exception/Throwable 子类绕过 autoType 限制。JFrog 研究员 Uriya Yavnieli 指出,利用此路径需要目标应用 classpath 中存在特定的 gadget 类,实际利用条件受到限制。
- 1.2.83:修复 CVE-2022-25845(CVSS 9.8),被视为 1.x 系列的安全终点站。
- 2024 年 10 月 23 日:阿里巴巴将 GitHub 仓库归档,只读模式。
如今终点站也沦陷了。
无补丁困境
问题的严重性在于时间点。阿里巴巴于 2024 年 10 月 23 日将 Fastjson 1.x 的 GitHub 仓库归档,设为只读模式。25.6k stars 的项目正式停止维护。这意味着此次漏洞极大概率不会获得官方安全补丁。
Fastjson 1.x 在 Java 生态中的部署量极为庞大。根据 Snyk 的漏洞数据库,受 CVE-2022-25845 影响的项目超过 5000 个 Maven 仓库。此次新漏洞的影响范围覆盖 1.2.68 至 1.2.83 全部版本,实际暴露面可能更大。大量遗留系统、内部框架、第三方组件仍以传递依赖的方式引用 Fastjson 1.x,排查难度不容低估。
补救措施
Firsov 指出,唯一有效的补救措施有两条路径。
第一,迁移至 Fastjson2。
Fastjson2 对代码进行了重写,废弃了 1.x 的兼容性白名单机制,安全性和性能均有提升。Maven 坐标从 com.alibaba:fastjson 切换为 com.alibaba.fastjson2:fastjson2。两代版本并非完全兼容,迁移前需进行充分的回归测试。官方提供了升级指南(fastjson 1.x User Upgrade Guide)。
第二,启用 SafeMode。
在应用启动参数或配置文件中加入:
ParserConfig.getGlobalInstance().setSafeMode(true);SafeMode 从 1.2.68 版本开始提供,启用后会彻底禁用所有 @type 反序列化行为。如果业务代码依赖 autoType 特性进行动态类型反序列化,启用 SafeMode 可能导致功能异常,上线前必须充分验证兼容性。
排查清单
- 在项目构建文件中检索
com.alibaba:fastjson依赖,确认版本号 - Maven 项目检查
pom.xml,Gradle 项目检查build.gradle - 执行
find . -name "fastjson*.jar"定位实际引用的 jar 包 - 检查传递依赖:
mvn dependency:tree | grep fastjson或gradle dependencies | grep fastjson - 对于无法立即升级的服务,优先启用 SafeMode 作为临时缓解措施
来源:Kirill Firsov (@k_firsov) · FearsOff Cybersecurity · GitHub alibaba/fastjson
- Januscape 漏洞分析:KVM 虚拟机逃逸与 16 年潜伏7/7/2026
- 7-Zip 高危漏洞被公开:扩展名无关的 RCE 攻击链5/27/2026