反序列化

362 字

反序列化

序列化是把对象变成可存储、可传输的数据;反序列化是把数据还原成对象。漏洞发生在应用把不可信数据还原成有行为的对象。

为什么危险

很多语言的对象在反序列化时会触发构造、析构、属性访问、魔术方法或回调。如果攻击者能控制序列化数据,就可能让程序走到意想不到的代码路径。

常见位置 说明
Cookie / Session 客户端保存状态被服务端还原
缓存和消息队列 内部数据被跨服务传递
API 参数 接口接收对象格式数据
文件导入 上传配置、项目、模型、报表文件

风险表现

轻则篡改身份、角色、配置和业务状态,重则触发文件操作、网络请求、命令执行等高危行为。反序列化漏洞通常依赖具体语言、框架和依赖库中的可利用调用链。

防护要点

不要反序列化不可信数据。需要传输状态时使用 JSON 等简单数据结构,并做签名、过期时间和字段白名单校验。禁用危险类型,升级依赖库,最小化可被反序列化的类和执行权限。

Licensed under CC BY-NC-SA 4.0