欢迎访问 内存溢出 —— 独立后端与系统工程技术博客

专注于分布式系统、Linux内核、数据库存储与后端工程实践

Java 反序列化防护:JEP 290 过滤器与 Fastjson AutoType 禁用

发表于:|最后更新:|分类:Web安全|阅读:153 次

Fastjson 的 AutoType 特性允许在 JSON 中通过 @type 指定任意类实例化,历史上多次被利用构造 Gadget 链实现 RCE。防御需在 JVM 层启用 JEP 290 ObjectInputFilter 白名单,并在 Fastjson 侧彻底关闭 AutoType。

一、Fastjson 安全配置与 JEP 290 全局过滤器

java
// Fastjson 2.x:显式关闭 AutoType,仅允许白名单
ParserConfig.getGlobalInstance().setAutoTypeSupport(false);

// JVM 启动参数强制全局反序列化过滤器(对所有 ObjectInputStream 生效)
// -Djdk.serialFilter=com.example.dto.*;java.base/*;!*
java
// 代码级 ObjectInputFilter 白名单示例
ObjectInputFilter filter = ObjectInputFilter.Config.createFilter(
    "com.example.dto.*;java.lang.String;java.util.ArrayList;!*"
);
ObjectInputFilter.Config.setSerialFilter(filter);

try (ObjectInputStream ois =