转载自微信公众号,作者:长亭安全应急响应中心 | 原文:点击查看

Fastjson2 是阿里巴巴开源的 Java JSON 解析库重构升级版。凭借其高性能和简洁的 API,Fastjson2 在国内 Java 生态中占据主导地位,被广泛应用于企业后端服务、微服务网关、数据接口层等核心业务场景。
2026 年 7 月,长亭应急响应实验室安全研究员原创发现并上报了 Fastjson2 存在一个全 JDK 版本通杀的远程代码执行(RCE)漏洞。攻击者仅需控制 JSON 请求体,无需目标系统存在任何已知危险类,即可触发 RCE。目前官方已发布修复 Commit,建议受影响用户尽快应用修复补丁或实施缓解措施。
漏洞描述
漏洞成因
该漏洞源于 Fastjson2 在默认配置下(未启用 SupportAutoType 时),仍可能处理通用对象元素开头的 @type 属性。
其“AutoType 已禁用”校验分支会将输入字符串的增量 FNV-1a 哈希与默认接受的哈希值进行匹配。然而,在匹配命中后,代码并未确认实际文本是否等于预期的白名单类名。因此,攻击者可以针对任意前缀计算 FNV-1a Chosen-Prefix 碰撞,使 URL 形态的字符串进入应用的上下文类加载器,最终导致任意代码执行。
漏洞影响
攻击者可借此在服务器上执行任意代码,极易导致服务器被完全控制、核心数据泄露或业务系统全面沦陷。
- 处置优先级: 高
- 漏洞类型: 远程代码执行 (RCE)
- 漏洞危害等级: 高
- 触发方式: 网络远程
- 权限认证要求: 无需权限
- 系统配置要求: 默认配置即可触发
- 用户交互要求: 无需交互
- 利用成熟度: POC 尚未公开
- 修复复杂度: 低(官方已发布修复补丁)
影响版本
- Fastjson2 <= 2.0.62
漏洞复现
漏洞的核心原理可以通过直接拉取官方 PR 的代码进行比对分析,在此不再赘述。
以下是用于获取基本信息的 POC 演示代码:
package poc;
import java.net.InetAddress;
public class Payload {
public Payload() {
String info = collect();
try {
java.io.FileWriter w = new java.io.FileWriter(
System.getProperty("java.io.tmpdir") + "/STRICT_RCE_PROOF.txt");
w.write(info + "\n");
w.close();
} catch (Exception e) {
/* ignore, still throw below */
}
throw new RuntimeException("RCE-PROOF: " + info);
}
private static String collect() {
StringBuilder sb = new StringBuilder();
try {
InetAddress addr = InetAddress.getLocalHost();
sb.append("hostname=").append(addr.getHostName());
sb.append(" ip=").append(addr.getHostAddress());
} catch (Exception e) {
sb.append("hostname=<unknown> ip=<unknown>");
}
sb.append(" user=").append(System.getProperty("user.name"));
sb.append(" pid=").append(ProcessHandle.current().pid());
sb.append(" os=").append(System.getProperty("os.name"))
.append(' ').append(System.getProperty("os.arch"));
sb.append(" javaVersion=").append(System.getProperty("java.version"));
sb.append(" cwd=").append(System.getProperty("user.dir"));
return sb.toString();
}
}
FNV-1a 哈希碰撞效果:

漏洞执行验证:

解决方案与缓解建议
官方已在 GitHub 更新了PR修复补丁,但是close了,具体代码变动可参考:
Fastjson2 PR #7695
目前我已向 Fastjson 官方提交了 Issue(Issue #7702)。
官方最新回答,修复版本将于 8 月 2 日发布。
在上周推修复fastjson1的漏洞,推动业务升级fastjson2,测试发现2.0.61,存在很多BUG,并且不兼容情况,推动升级的时候业务也不敢升级。作为甲方,还是推荐JVM禁用方式,在官方尚未发布正式的修复版本包(Release)之前,强烈建议受影响的项目采取以下临时缓解措施:
临时缓解方案
1. 完全禁用 AutoType(推荐)
开启 SafeMode来完全禁用 AutoType 功能,从根本上杜绝此类风险。
- 代码配置方式:
ParserConfig.getGlobalInstance().setSafeMode(true); - fastjson1 ,fastjson2兼容JVM 启动参数配置方式(官方推荐):
-Dfastjson.parser.safeMode=true - fastjson2 JVM 启动参数配置方式:
-Dfastjson2.parser.safeMode=true
2026年07月29日17:42:39 更新,官方出了新的补丁包
- fastjson2 可更新版本2.0.63
- fastjson1 原本不维护也推出了更新包1.2.84
2. WAF 规则防护配置
在网关或 WAF 层面,拦截请求体中 JSON 数据的 Key 包含 @type 字段或者jar:file、jar:http的恶意请求。
JAVA安全网