Fastjson2 全版本 RCE 漏洞:维护者确认暂无补丁

漏洞概述

7 月 27 日,长亭科技安全应急响应中心披露 Fastjson2 远程代码执行漏洞。攻击者可通过构造恶意 JSON 数据绕过 AutoType 类型校验,在目标服务器上执行任意代码。漏洞影响 Fastjson2 2.0.62 及以前全部已发布版本,即截至披露时所有版本均受影响。

Fastjson2 是阿里巴巴开源的 Java JSON 解析库,在国内 Java 生态中占据主导地位,广泛应用于企业后端服务、微服务网关、数据接口层等核心场景。

漏洞技术特征

维度详情
漏洞类型远程代码执行(RCE)
危害等级
触发方式网络远程
权限认证无需权限
系统配置默认配置即可利用
用户交互无需用户交互
利用成熟度POC 未公开
影响版本Fastjson2 ≤ 2.0.62(全部已发布版本)

官方回应:所有已发布版本均无修复

项目维护者 wenshao 在 GitHub Issue #7702 中确认了以下信息:

问题确认:fastjson2 的 AutoType 类型解析路径确实存在安全问题,在特定条件下可能被利用,团队已在跟进修复。

关于 PR #7695:社区讨论中提到的 PR #7695 并非已合并的正式修复。该 PR 已关闭且未合并进主干,当前所有已发布版本均不包含修复。正式修复将通过独立 PR 合并并随后续版本发布。

修复时间线:修复正在进行中,会尽快合并并随下一个版本发布。Issue #4034 中报告的 2.0.61 大 JSON 报错问题也已记录,会在发版前一并评估。

wenshao 在 GitHub Issue #7702 的官方回应

长亭科技公告中标注"修复复杂度:低,官方已发布修复补丁",并引用了 PR #7695 作为修复方案。但 wenshao 明确表示该 PR 已关闭未合并,所有已发布版本无正式补丁。修复版会在近期随新版本发布,请以官方 release 为准。

临时缓解方案

修复版本发布前,官方建议开启 SafeMode 完全禁用 AutoType。SafeMode 在类加载时读取(static final),属于启动期配置,需在应用启动前设置,运行时动态设置无效。

方式一:JVM 启动参数(推荐)

bash
java -Dfastjson2.parser.safeMode=true -jar app.jar

兼容旧属性名 -Dfastjson.parser.safeMode=true(fastjson 1.x 风格)。

方式二:classpath 配置文件

在 classpath 根目录(如 Spring Boot 的 src/main/resources/)新建 fastjson2.properties

properties
fastjson2.parser.safeMode=true

方式三:环境变量(容器 / 云平台)

bash
JAVA_TOOL_OPTIONS=-Dfastjson2.parser.safeMode=true

常见部署场景配置

Tomcatbin/setenv.sh,没有则新建):

bash
export CATALINA_OPTS="$CATALINA_OPTS -Dfastjson2.parser.safeMode=true"

Spring Boot

推荐使用 JVM 启动参数或 fastjson2.properties。写在 application.propertiesapplication.yml 里不会生效。Spring 配置不会自动转为 JVM 系统属性,fastjson2 也不读取 Spring 配置。

Docker / Kubernetes

dockerfile
ENV JAVA_TOOL_OPTIONS="-Dfastjson2.parser.safeMode=true"

SafeMode 注意事项

  • 开启后 autoType 被完全禁用,@type 不再触发任何类加载,从根本上规避该问题
  • 如果业务确实依赖 autoType 反序列化(默认配置下通常不依赖),需评估改为显式指定目标类型
  • 有用户反馈开启 SafeMode 后报 safeMode not support autoType 错误,说明业务代码中存在 autoType 调用,需排查代码

本月第二个:fastjson 1.x 同样沦陷

这是 fastjson 生态本月第二个严重漏洞。7 月 19 日,安全研究员 Kirill Firsov(FearsOff Cybersecurity)披露 fastjson 1.x 最后一版 1.2.83 自身存在无 gadget RCE:无需 autoType、无需 classpath gadget,JDK 8/17/21 全可复现。

fastjson 1.x 仓库已于 2024 年 10 月 23 日归档(read-only),官方大概率不会推送安全补丁。

这意味着,无论使用 fastjson 1.x 还是 2.x,当前都面临未修复的远程代码执行风险:

  • 1.x 用户:升级到 fastjson2(API 不完全兼容,需测试)或切换到 Jackson
  • 2.x 用户:立即开启 SafeMode,等待官方修复版本发布

社区反应

GitHub Issue #7702 下讨论活跃。有用户反映大面积受到影响,询问修复版本时间节点。有开发者建议 fastjson2 出一个 noneautotype 版本彻底杜绝该问题。也有用户直言"还是用 Jackson 吧,这三天两头搞这种"。

wenshao 对社区的情绪表示理解,承认反复收到安全告警对团队是实实在在的负担和信任消耗,同时表示选用 Jackson 是完全正当的工程决策。

来源