不安全的反序列化指应用把攻击者可控的数据还原为对象时触发非预期逻辑。Java、PHP、Python(pickle)的反序列化会在还原对象过程中自动调用魔术方法(Java 的 readObject、PHP 的 __wakeup、Python 的 __reduce__)。攻击者构造 gadget chain,把类路径上多个类的现成方法像积木串起来,最终拼出命令执行,即 RCE。经典案例是 Java Commons Collections 链(ysoserial)、Fastjson autoType 滥用。
关键认知:漏洞不在某个类"有 bug",而在于反序列化不可信输入这一行为本身——gadget 利用的是正常依赖里现成的方法。
防御:1)原则上禁止反序列化不可信数据,跨系统传输改用 JSON 等纯数据格式并配合 schema 校验;2)必须用时采用白名单(Java 的 JEP 290 ObjectInputFilter、Jackson 关闭 default typing);3)及时升级依赖、收敛 classpath 减少可用 gadget;4)RASP 与出站流量管控做纵深。追问方向:Java 原生序列化 vs Fastjson 差异、如何审计 gadget 利用面。