Java 原生反序列化(readObject)在处理未受信任的二进制输入流时,若类路径包含 Apache Commons Collections 等第三方依赖,攻击者可通过精心构造由 InvokerTransformer 与 ChainedTransformer 组成的 Gadget 触发任意系统命令执行。
一、JEP 290 原生反序列化过滤白名单
java
// 启用 JVM 级别 ObjectInputFilter 阻断恶意 Class 实例化
SerialFilter.setFilter(info -> {
Class<?> clazz = info.serialClass();
if (clazz != null) {
if (clazz.getName().startsWith("org.apache.commons.collections")) {
return ObjectInputFilter.Status.REJECTED;
}
}
return ObjectInputFilter.Status.ALLOWED;
});