原创

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),专注Java技术干货分享!让你从此路人变大神!回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。微信搜索小程序“Java精选面试题”,内涵3000+道Java面试题!

涵盖:互联网那些事、算法与数据结构、SpringMVC、Spring boot、Spring Cloud、ElasticSearch、Linux、Mysql、Oracle等

评论

分享:

支付宝

微信