JAVA安全网JAVA安全网

生命不息,折腾不止。
--JAVA人自留地。

Fastjson2 远程代码执行漏洞预警&复现

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

Fastjson2 是阿里巴巴开源的 Java JSON 解析库重构升级版,凭借其高性能和简洁的 API 在国内 Java 生态中占据主导地位,广泛应用于企业后端服务、微服务网关、数据接口层等核心场景。

2026 年 7 月,长亭应急响应实验室安全研究员原创发现并上报Fastjson2存在一个全JDK版本通杀的远程代码执行漏洞。攻击者仅需控制 JSON 请求体,无需目标系统存在任何已知危险类,即可触发 RCE。目前官方已发布修复commit,建议受影响用户尽快应用修复补丁或实施缓解措施。

漏洞描述
漏洞成因

该漏洞源于Fastjson2 在默认配置下未启用SupportAutoType 时,仍可能处理通用对象元素开头@type 属性。其“AutoType 已禁用”校验分支会将输入字符串的增量 FNV-1a 哈希与默认接受哈希进行匹配,但命中后不会确认实际文本是否等于预期的白名单类名。因此,攻击者可以针对任意前缀计算FNV chosen-prefix 碰撞,使 URL 形态的字符串进入应用的上下文类加载器,导致任意代码执行。

漏洞影响

攻击者可在服务器上执行任意代码,可能导致服务器被完全控制、数据泄露或业务系统沦陷。

处置优先级:高

漏洞类型:远程代码执行

漏洞危害等级:

触发方式:网络远程

权限认证要求:无需权限

系统配置要求:默认配置

用户交互要求:无需用户交互

利用成熟度:POC 未公开

修复复杂度:低,官方已发布修复补丁

影响版本

Fastjson <= 2.0.62

漏洞复现

漏洞原理,直接直接把PR拉过来,然后让AI分析,在此不再累赘。

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 哈希碰撞
2.png

验证:
1.png

解决方案

官方已更新修复补丁,参考链接:
https://github.com/alibaba/fastjson2/pull/7695/changes

我向fastjson提了issues,官网暂未发布修复版本,可以考虑采取缓解措施:
https://github.com/alibaba/fastjson2/issues/7702

临时缓解方案

  1. 完全禁用 AutoType:开启 SafeMode 或使用noneautotype版本来完全禁用 AutoType 功能,从根本上杜绝此类风险。

代码配置:ParserConfig.getGlobalInstance().setSafeMode(true);

JVM 参数:-Dfastjson.parser.safeMode=true

  1. WAF规则配置:拦截请求体中key包含 @type 字段的 JSON 数据。

针对此安全漏洞,官网目前的解答:
https://github.com/alibaba/fastjson2/issues/7702,建议JVM增加参数缓解

未经允许不得转载:JAVA安全网 » Fastjson2 远程代码执行漏洞预警&复现

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址