CyberGlossary

漏洞

不安全反序列化

别称: 不安全的反序列化, 对象反序列化漏洞

定义

应用对不可信数据进行反序列化的漏洞,攻击者可借此实例化任意对象,常常实现远程代码执行。

当应用把序列化数据(Java/PHP/Python/.NET 的二进制格式、YAML 或带类型元信息的 JSON)还原为对象时,反序列化器可能调用构造函数、魔术方法或 gadget 链。在输入不可信的情况下,攻击者构造的 payload 会在反序列化过程中触发危险行为,导致 RCE、认证绕过、文件写入或 DoS。Apache Commons Collections(Java)、Pickle(Python)、.NET BinaryFormatter 等库中的 gadget 链曾引发重大事件。防御措施包括完全避免对不可信数据反序列化、使用无类型恢复的格式(显式 schema 的纯 JSON)、对序列化数据签名、对可反序列化类型采用白名单,并保持运行时更新。

示例

  • Java 应用对会话 Cookie 反序列化,classpath 中存在 Commons Collections,导致 RCE。
  • Python 服务对用户控制的字节运行 pickle.loads。

相关术语