Entry № 603
不安全反序列化
不安全反序列化 是什么?
不安全反序列化应用对不可信数据进行反序列化的漏洞,攻击者可借此实例化任意对象,常常实现远程代码执行。
当应用把序列化数据(Java/PHP/Python/.NET 的二进制格式、YAML 或带类型元信息的 JSON)还原为对象时,反序列化器可能调用构造函数、魔术方法或 gadget 链。在输入不可信的情况下,攻击者构造的 payload 会在反序列化过程中触发危险行为,导致 RCE、认证绕过、文件写入或 DoS。Apache Commons Collections(Java)、Pickle(Python)、.NET BinaryFormatter 等库中的 gadget 链曾引发重大事件。防御措施包括完全避免对不可信数据反序列化、使用无类型恢复的格式(显式 schema 的纯 JSON)、对序列化数据签名、对可反序列化类型采用白名单,并保持运行时更新。
● 示例
- 01
Java 应用对会话 Cookie 反序列化,classpath 中存在 Commons Collections,导致 RCE。
- 02
Python 服务对用户控制的字节运行 pickle.loads。
● 常见问题
不安全反序列化 是什么?
应用对不可信数据进行反序列化的漏洞,攻击者可借此实例化任意对象,常常实现远程代码执行。 它属于网络安全的 漏洞 分类。
不安全反序列化 是什么意思?
应用对不可信数据进行反序列化的漏洞,攻击者可借此实例化任意对象,常常实现远程代码执行。
如何防御 不安全反序列化?
针对 不安全反序列化 的防御通常结合技术控制与运营实践,详见上方完整定义。
不安全反序列化 还有哪些其他名称?
常见的别称包括: 不安全的反序列化, 对象反序列化漏洞。