反序列化漏洞简介.pdf
ThenameoftheDepartmentBeijingForestStudio
北京理工大学信息系统及安全对抗实验中心部门名称
反序列化漏洞简介
李玉硕士研究生
2019年05月05日
内容提要
•背景介绍
•基础知识
•关键技术
•防御方法
•参考文献
2
预期收获
•了解序列化、反序列化基本概念和过程
•了解反序列化漏洞成因、利用方法、防御方法
3
反序列化漏洞简介
背景介绍
背景介绍
•2015年ApacheCommons-collections被爆出第
一个java反序列化漏洞。此后,大量反序列化CVE被爆
出。
•近四年的反序列化CVE:
5
反序列化漏洞简介
基础知识
基础知识
•什么是序列化与反序列化
•为什么要序列化
•序列化和反序列化过程
•Python中的序列化与反序列化
•反序列化漏洞成因
7
基础知识
•什么是序列化与反序列化
–序列化:将一个类对象转换为字节流,从而进行存储和传输
–反序列化:将字节流还原为对象
反序列化
序列化
8
基础知识
•为什么要序列化:为了传递和保存对象
–传递:统一格式,把不同类型的数据统一为字节流,便于传
输和处理
字节流
–保存:实例化对象后,要想保存对象信息,可以将对象序列
化后存入文件,下次读取的时候只需将文件中的数据反序列
化,既可还原对象,又保留了对象的所有状态和变量。
9
基础知识
•序列化和反序列化的过程
–序列化:
•从对象中提取所有属性,并将属性转化为键值对
•写入对象的类名
•形成键值对并转换为字节流输出
–反序列化:
•接收序列化后的数据
•重建属性列表
•调用相关方法,创建一个新的对象
•将属性值复制到新的对象中
10
基础知识
•Python中的序列化方法
–pickle模块:
•序列化:
–dump(对象,文件对象)——转换为字节流并写入文件
–dumps(对象)——转换为字节流,通常用于传输