Fastjson高危漏洞紧急修复指南

2026年8月,Fastjson再次被曝出严重安全漏洞,编号CVE-2026-16723(国内编号QVD-2026-43021),CVSS评分高达9.8,属于远程代码执行级别的高危风险。

攻击者只需构造一段精心设计的恶意JSON请求,无需任何前置权限,就能在目标服务器上执行任意系统命令,直接拿下整个项目的控制权。

很多人第一反应是"我项目里早就不用Fastjson了"。但现实情况是,大量老Spring Boot项目的依赖树里,Fastjson可能正以间接依赖的方式悄悄躺着,你压根没察觉到它的存在。

本篇文章把漏洞影响范围、自查步骤和修复方案一次性讲清楚,照着操作就能把风险堵上。

01

这个漏洞到底有多狠?

漏洞出在Fastjson的反序列化核心逻辑中。攻击者不需要任何前置条件,只要向你的接口发送一个特制的JSON数据包,就能触发远程代码执行,完成以下高危操作:

  • 下载执行恶意脚本,将服务器变成"肉鸡"

  • 窃取数据库配置、用户敏感数据等核心信息

  • 删除业务文件,直接导致线上服务瘫痪

  • 穿透内网,攻击同集群内的其他服务

即使项目中没有显式使用Fastjson进行序列化操作,只要依赖版本在风险范围内,同样可能被攻击命中。

目前互联网上已出现公开的PoC验证脚本,黑客开始批量扫描全网存在漏洞的Spring Boot服务。现在不处理,线上随时可能出问题。

02

先自查:你的项目有没有中招?

很多人第一反应是去pom.xml里搜Fastjson坐标,但这样做会漏掉间接依赖。以下两个方法可以100%准确排查:

方法一:Maven命令一键扫描

在项目根目录执行:

复制代码
mvn dependency:tree |grep fastjson

如果输出了Fastjson版本号,且版本在1.2.68 ~ 1.2.83之间,就在本次漏洞影响范围内,必须处理。

方法二:代码验证漏洞是否可触发

在任意Spring Boot接口中临时加一段测试代码,启动后用Postman发送恶意JSON请求验证:

复制代码
@RestController
@RequestMapping("/test")
publicclass VulnerabilityCheckController {
    @PostMapping("/fastjsonCheck")
    publicString checkVulnerability(@RequestBodyString jsonStr) {
        try { // 直接用Fastjson解析传入的JSON 
            JSON.parse(jsonStr);
            return"解析完成";
        } catch (Exception e) {
            return"解析异常";
        }
    }
}

如果发送构造的恶意JSON后服务器出现异常执行痕迹,说明项目存在被利用风险,必须马上修复。

03

修复方案:三种场景对号入座

根据项目情况选择对应的修复方式:

场景一:项目直接依赖了Fastjson

如果项目里明确写了Fastjson依赖,建议直接迁移到Fastjson 2.x。1.x系列已在2024年停止维护,官方不会再为1.x发布安全补丁。

复制代码
<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2</artifactId>
    <version>2.0.61</version>
</dependency>

同时全局替换import:com.alibaba.fastjsoncom.alibaba.fastjson2

如果暂时无法迁移,可先开启SafeMode临时止血:

复制代码
@PostConstructpublicvoidenableSafeMode() {
    ParserConfig.getGlobalInstance().setSafeMode(true);
}

SafeMode会禁用@type,直接截断漏洞触发链路。代价是业务中如果使用了Fastjson的多态反序列化功能,会受到影响,上线前务必验证。

场景二:Fastjson是间接依赖引入的

第三方工具包或SDK可能偷偷带入了Fastjson。在对应依赖中排除旧版本,再手动引入安全版本:

复制代码
<dependency>
    <groupId>com.xxx.thirdpart</groupId>
    <artifactId>common-utils</artifactId>
    <version>2.3.0</version>
    <exclusions>
        <exclusion>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
        </exclusion>
    </exclusions>
</dependency><!-- 迁移到Fastjson 2.x -->
<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2</artifactId>
    <version>2.0.61</version>
</dependency>

场景三:可以彻底替换Fastjson

如果项目没有强依赖Fastjson的特殊功能,直接切换到Spring Boot默认的Jackson是最彻底的方案:

复制代码
@ConfigurationpublicclassJacksonConfigimplementsWebMvcConfigurer {
    @OverridepublicvoidconfigureMessageConverters(List < HttpMessageConverter < ? >> converters) {
        converters.removeIf(converter-> converterinstanceofFastJsonHttpMessageConverter);
    }
}

从根源上杜绝所有Fastjson相关的安全风险。

04

修复后务必验证

升级完成后,必须做两个验证:

验证一:检查依赖版本

再次执行:

复制代码
mvn dependency:tree |grep fastjson

确认所有Fastjson相关依赖已被排除,没有残留的低版本。

验证二:重新发送PoC请求

用之前的测试接口再次发送恶意JSON,确认漏洞已无法触发。

05

最后提醒

做后端这么多年,见过太多因忽略组件漏洞导致线上被入侵的事故。有人觉得"项目小没人会攻击",但现在黑客都用脚本全网批量扫描,根本不关心项目规模,有漏洞就会被盯上。

建议所有Java开发者今天之内把手里的Spring Boot项目全部自查一遍。10分钟的操作,就能避免后续可能要花几天几夜去处理的线上事故。

  • 影响版本:Fastjson 1.2.68 ~ 1.2.83

  • 修复方案:迁移到Fastjson 2.x,或开启SafeMode

  • 漏洞编号:CVE-2026-16723 / QVD-2026-43021

  • CVSS评分:9.8

相关推荐
gugucoding8 小时前
59. 【Java】Spring Boot 入门:第一个 Web 应用
java·开发语言·spring boot
宠友信息12 小时前
内容社区源码开发实践解析,用Spring Boot打造1:1仿小红书源码平台
java·spring boot·redis·websocket·mysql·spring·uni-app
Su米苏12 小时前
Redis高级用法
spring boot·redis
paopaokaka_luck12 小时前
基于springboot3+vue3的车间生产管理系统(Echarts图形化分析、BI报表)
java·前端·spring boot·学习·echarts
摇滚侠15 小时前
《SpringBoot 3:入门与应用实战》第 7 章 AOP 思想与实现 阅读笔记 13
java·spring boot·笔记
FYKJ_201015 小时前
springboot网上购书商城---附源码15749
java·spring boot·后端·python·spark·django·php
爱学堂IT分享16 小时前
码神之路-Netty-从零实现RPC框架+SpringBoot实战项目教程
spring boot·网络协议·rpc
evans在进步16 小时前
Spring Boot 启动流程与 @SpringBootApplication 核心原理详解
java·spring boot·后端
摇滚侠16 小时前
《SpringBoot 3:入门与应用实战》第 6 章 Spring Boot 最佳实践 阅读笔记 12
android·spring boot·笔记