JAVA代码审计:如何防范JAVA反序列化漏洞?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1278个文字,预计阅读时间需要6分钟。
一、漏洞原理 + Serialization(序列化):将Java对象以字节序列的形式保存到磁盘文件中的过程,也可说是保存Java对象状态的过程。
二、反序列化(deserialization):将保存在磁盘文件中的Java字节码重新恢复成Java对象的过程。
一、漏洞原理
Serialization(序列化):将java对象以一连串的字节保存在磁盘文件中的过程,也可以说是保存java对象状态的过程
deserialization(反序列化):将保存在磁盘文件中的java字节码重新转换成java对象称为反序列化
Java程序使用ObjectInputStream对象的readObject方法将反序列化数据转换为java对象。但当输入的反序列化的数据可被用户控制,那么攻击者即可通过构造恶意输入,让反序列化产生非预期 的对象,在此过程中执行构造的任意代码。
漏洞代码示例
......//读取输入流,并转换对象
InputStream in=request.getInputStream();
ObjectInputStream ois = new ObjectInputStream(in);
//恢复对象
ois.readObject();
ois.close();Java程序使用ObjectInputStream对象的readObject方法将反序 列化数据转换为java对象。但当输入的反序列化的数据可被用户控 制,那么攻击者即可通过构造恶意输入,让反序列化产生非预期的 对象,在此过程中执行构造的任意代码。
本文共计1278个文字,预计阅读时间需要6分钟。
一、漏洞原理 + Serialization(序列化):将Java对象以字节序列的形式保存到磁盘文件中的过程,也可说是保存Java对象状态的过程。
二、反序列化(deserialization):将保存在磁盘文件中的Java字节码重新恢复成Java对象的过程。
一、漏洞原理
Serialization(序列化):将java对象以一连串的字节保存在磁盘文件中的过程,也可以说是保存java对象状态的过程
deserialization(反序列化):将保存在磁盘文件中的java字节码重新转换成java对象称为反序列化
Java程序使用ObjectInputStream对象的readObject方法将反序列化数据转换为java对象。但当输入的反序列化的数据可被用户控制,那么攻击者即可通过构造恶意输入,让反序列化产生非预期 的对象,在此过程中执行构造的任意代码。
漏洞代码示例
......//读取输入流,并转换对象
InputStream in=request.getInputStream();
ObjectInputStream ois = new ObjectInputStream(in);
//恢复对象
ois.readObject();
ois.close();Java程序使用ObjectInputStream对象的readObject方法将反序 列化数据转换为java对象。但当输入的反序列化的数据可被用户控 制,那么攻击者即可通过构造恶意输入,让反序列化产生非预期的 对象,在此过程中执行构造的任意代码。

