原创

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),回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。

Java精选专注程序员推送一些Java开发知识,包括基础知识、各大流行框架(Mybatis、Spring、Spring Boot等)、大数据技术(Storm、Hadoop、MapReduce、Spark等)、数据库(Mysql、Oracle、NoSQL等)、算法与数据结构、面试专题、面试技巧经验、职业规划以及优质开源项目等。其中一部分由小编总结整理,另一部分来源于网络上优质资源,希望对大家的学习和工作有所帮助。

评论

分享:

支付宝

微信