不安全反序列化漏洞(Insecure Deserialization,CWE-502)是指应用程序在反序列化用户输入的数据时,未对数据进行充分验证,导致攻击者可以构造恶意数据,执行任意代码或进行其他恶意操作。这种漏洞被列入 OWASP Top 10 安全风险榜单,可能导致远程代码执行(RCE)、权限提升、信息泄露等严重安全问题。
漏洞原理
序列化是将对象转换为可存储或传输格式(如 JSON、XML、二进制流)的过程,反序列化则是其逆过程。当应用程序反序列化不受信任的数据时,攻击者可以:
- 注入恶意对象,触发特定的方法调用链(Gadget Chain)
- 利用原型污染(Prototype Pollution)篡改对象属性
- 通过 JNDI 注入等方式加载远程恶意类
著名高危 CVE 案例
| CVE 编号 | 影响组件 | CVSS | 描述 |
|---|---|---|---|
| CVE-2025-66478 | React Server Components | 10.0 | React Flight 协议反序列化漏洞,攻击者可通过构造 HTTP 请求执行任意代码 |
| CVE-2025-55182 | Next.js App Router | 10.0 | 与 CVE-2025-66478 相关,影响 Next.js 14.3.0-canary.77+ 及 15.x/16.x 版本 |
| CVE-2025-27818 | Apache Kafka Connect | 9.8 | 通过 LDAP 响应触发 Java 反序列化,可执行任意代码 |
| CVE-2024-21216 | Oracle WebLogic Server | 9.8 | 影响 12.2.1.4.0 和 14.1.1.0.0 版本,可远程执行命令 |
| CVE-2024-23636 | SOFARPC | 9.8 | 绕过 SOFA Hessian 黑名单,利用 Gadget 链实现 RCE |
| CVE-2022-25845 | Fastjson | 9.8 | 绕过 autoType 限制,反序列化危险类导致 RCE |
| CVE-2022-22965 | Spring Framework | 9.8 | Spring4Shell,影响低于 5.3.18/5.2.20 版本 |
防范措施
- 避免反序列化不受信任的数据:对来自客户端的数据使用安全的数据格式(如纯 JSON)
- 实施严格的类型检查:使用白名单机制限制可反序列化的类
- 使用安全的反序列化库:如 Java 中使用 ObjectInputFilter 进行过滤