fastjson反序列化漏洞怎么解决?漏洞原理是什么?

阳光 2020-12-24 23:16:17 java常见问答 5628

在推动Fastjson组件升级的过程中总会遇到一些漏洞问题,遇到这些问题总是要解决的,这样才能方便以后的操作,那么今天我们就为大家讲解一下fastjson反序列化漏洞的解决方案。

修复方法为替换有漏洞的commons-collections组件。

建议:原来是3.2.x就替换为3.2.2,原来是4.x就替换为4.4.1,若出现不兼容,请尝试替换另一个版本,下面提供两个实例:

修复实例1:

环境:windows7 + weblogic 10.3.3.0,先停止weblogic,在中间件modules目录下存在名为com.bea.core.apache.commons.collections_x.x.x.jar的文件。

下载最新的commons-collections(bin包,不是源码包),用压缩包中的commons-collections-3.2.2.jar替换掉有漏洞的jar包。

注:保持原jar包的名字,即名字不变换掉jar包,启动weblogic。

修复实例2:

环境:CentOS7 + weblogic 10.3.3.0,先停止weblogic,在中间件modules目录下存在名为com.bea.core.apache.commons.collections_x.x.x.jar的文件。下载最新的commons-collections(bin包,不是源码包),用压缩包中的commons-collections-3.2.2.jar替换掉有漏洞的jar包。

注:保持原jar包的名字,即名字不变换掉jar包。启动weblogic。

漏洞原理是什么?

多个版本的Fastjson组件在反序列化不可信数据时会导致代码执行。究其原因,首先,Fastjson提供了autotype功能,允许用户在反序列化数据中通过“@type”指定反序列化的类型。

其次,Fastjson自定义的反序列化机制时会调用指定类中的setter方法及部分getter方法,那么当组件开启了autotype功能并且反序列化不可信数据时,攻击者可以构造数据,使目标应用的代码执行流程进入特定类的特定setter或者getter方法中,若指定类的指定方法中有可被恶意利用的逻辑(也就是通常所指的“Gadget”),则会造成一些严重的安全问题。

看完文章之后,大家是不是对解决fastjson反序列化漏洞有了新的思路了呢!如果你还有不懂的地方,可以参考本文哦!最后大家如果想要了解更多json相关知识,敬请关注奇Q工具网。

推荐阅读:

java编译时异常有哪些?java常见异常有哪些?

java怎么学精通?怎样才算精通?

java如何接收json数据?json的类型有哪些?