原创

Java 反序列化安全

什么是序列化?

 序列化(Serialization)将对象的状态信息状花为可以存储或传输的形式的过程。

   在序列化期间,对象将其状态写入到临时或者持久存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。


    序列化:将数据结构或者对象转换成二进制串的过程;反序列化:将在序列化过程中所生产的二进制串转换成数据结构或者对象的过程。

blob.png

反序列化漏洞原理

    反序列化漏洞的本质就是反序列化机制打破了数据和对象的边界,导致攻击者注入的恶意序列化数据在反序列化过程中被还原成对象,控制了对象就可能在目标系统上执行攻击代码。

    java序列化常见应用于RMI、JMX、JMS等技术中。

blob.png


案例分析

案例一:Apache ActiveMQ 5.12.0 远程代码执行漏洞(JMS)

    Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞,该漏洞源于程序未能限制可在代理中序列化的类。

    远程攻击者可借助特制的序列化的Java Message Service(JMS) ObjectMessage对象利用该漏洞执行任意代码。

blob.png


案例二:JBoss 反序列化漏洞(JMX)

infosafe_5.jpg

infosafe_6.jpg

漏洞防御

infosafe_7.jpg


关注下方微信公众号“Java精选”(w_z90110),回复关键字领取资料:如HadoopDubboCAS源码等等,免费领取资料视频和项目。 

涵盖:程序人生、搞笑视频、算法与数据结构、黑客技术与网络安全、前端开发、Java、Python、Redis缓存、Spring源码、各大主流框架、Web开发、大数据技术、Storm、Hadoop、MapReduce、Spark、elasticsearch、单点登录统一认证、分布式框架、集群、安卓开发、iOS开发、C/C++、.NET、Linux、Mysql、Oracle、NoSQL非关系型数据库、运维等。

评论

分享:

支付宝

微信