fastjson (3修复)

一、核心修复:升级到安全版本(优先级最高)

fastjson 漏洞的根源是早期版本的设计缺陷,升级版本是最彻底、最有效的修复方式,优先推荐迁移到 2.x 系列(重构了核心逻辑,安全性大幅提升)。

1. 升级到 fastjson2(2.x 版本,推荐)

这是官方主推的安全版本,完全重构了反序列化逻辑,默认关闭自动类型检测,从根本上规避了核心漏洞。

  • Maven 依赖配置:
java 复制代码
<!-- 移除旧的 1.x 依赖(关键:避免版本冲突) -->
<!-- <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>
</dependency> -->

<!-- 添加 fastjson2 依赖(2025年最新稳定版) -->
<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2</artifactId>
    <version>2.0.50</version>
</dependency>

<!-- 可选:若项目中有大量 1.x 写法,可引入兼容包(减少代码修改) -->
<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2-extension</artifactId>
    <version>2.0.50</version>
</dependency>
  • Gradle 依赖配置:
Groovy 复制代码
// 移除旧依赖
// implementation 'com.alibaba:fastjson:1.2.47'

// 添加 fastjson2
implementation 'com.alibaba.fastjson2:fastjson2:2.0.50'
// 可选兼容包
implementation 'com.alibaba.fastjson2:fastjson2-extension:2.0.50'
2. 临时升级到 1.x 安全版本(无法迁移 2.x 时)

若项目因兼容性问题暂时无法升级到 2.x,可升级到 1.x 系列的最新安全版本(仅临时过渡,建议最终迁移到 2.x):

复制代码
<!-- 1.x 最新稳定版(2025年) -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.83</version>
</dependency>
升级后验证

执行以下命令确认依赖已更新:

bash 复制代码
# Maven 验证
mvn dependency:tree | grep fastjson

# Gradle 验证
gradle dependencies | grep fastjson

输出应显示升级后的版本(如 2.0.50 或 1.2.83),无旧版本依赖。

二、临时防护:配置安全规则(无法立即升级时)

若暂时无法升级版本(如项目发布周期限制),可通过配置限制反序列化行为,阻断漏洞利用路径:

1. 核心安全配置(1.x 版本)
java 复制代码
import com.alibaba.fastjson.parser.ParserConfig;
import com.alibaba.fastjson.JSON;

public class FastjsonSecurityConfig {
    // 项目启动时初始化(如 Spring 项目的 @PostConstruct 方法)
    public static void initFastjsonSecurity() {
        // 1. 关闭自动类型检测(核心:阻断漏洞利用的关键)
        ParserConfig globalConfig = ParserConfig.getGlobalInstance();
        globalConfig.setAutoTypeSupport(false);
        
        // 2. 配置反序列化白名单(仅允许指定包下的类反序列化)
        // 替换为你项目的实际包名,多个包可多次调用
        globalConfig.addAccept("com.youproject.model.");
        globalConfig.addAccept("com.youproject.dto.");
        
        // 3. 禁用高危类(补充防护,防止绕过)
        globalConfig.addDeny("com.sun.rowset.");
        globalConfig.addDeny("java.lang.");
        globalConfig.addDeny("org.apache.commons.");
        
        // 4. 可选:使用自定义 ParserConfig,避免全局配置被篡改
        ParserConfig customConfig = new ParserConfig();
        customConfig.setAutoTypeSupport(false);
        // 业务代码中使用自定义配置解析
        // JSON.parseObject(jsonStr, User.class, customConfig);
    }
}
2. Spring 项目集成示例

在 Spring 启动类中初始化安全配置:

java 复制代码
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import javax.annotation.PostConstruct;

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

    @PostConstruct
    public void init() {
        // 项目启动时加载 fastjson 安全配置
        FastjsonSecurityConfig.initFastjsonSecurity();
    }
}
相关推荐
其实防守也摸鱼2 分钟前
CTF Web 6 题全解 Writeup
linux·sql·学习·算法·安全·ctf·xss
IT大白鼠4 分钟前
2026 年 9 月至今重大安全漏洞专题报告——微软产品高危漏洞深度解析
安全·microsoft
zxanz16 分钟前
该怎么去选择 SSL 证书来使用?有什么方法不
服务器·网络协议·ssl
Xudde.12 分钟前
DC-1 靶机渗透测试(Vulnhub Writeup)
笔记·学习·安全·web安全
汤愈韬22 分钟前
OSPF基础二
网络·网络协议
Raas10035 分钟前
AI网关能做调用审计吗?MAI Gateway(魔芋企业级AI网关)实战能力深度解读
java·服务器·网络·数据库·gateway·prompt·企业级产品
骇客野人37 分钟前
企业4A架构(业务架构、应用架构、数据架构、安全架构)完整设计与搭建方案
安全·架构·安全架构
dualven_in_csdn39 分钟前
【网络安全】fscan的学习与使用
网络·学习
听说6661 小时前
信息安全工程师 - 第二十章 据库系统安全
网络·安全·web安全·网络安全·系统安全
杭州领祺科技1 小时前
分布式光伏『四可』接入改造:绿电直连场景下的二次系统通信与安全架构(27 号令 4 区落位 + 7 产品边界)
分布式·安全·安全架构·光伏·电力·绿电直连·二次系统