jackson.ObjectMapper里enableDefaultTyping方法过期

enableDefaultTyping过期的原因是存在漏洞【阿里云上的漏洞公告】Jackson框架enableDefaultTyping方法反序列化漏洞

漏洞名称

Jackson框架enableDefaultTyping方法反序列化漏洞

官方评级

高危

漏洞描述

该漏洞是由于Jackson框架enableDefaultTyping方法存在Java反序列化代码执行漏洞,攻击者利用漏洞可在服务器主机上执行任意代码或系统指令,取得网站服务器的控制权。

漏洞利用条件和方式

黑客可以远程代码执行来利用该漏洞。

漏洞影响范围

Jackson 2.7 < 2.7.10

这个方法指定序列化输入的类型
解决之前

		ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);
        template.setValueSerializer(jackson2JsonRedisSerializer);

解决方法:使用activateDefaultTyping方法替换掉enableDefaultTyping
替换方法为:

 		ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        //om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance ,
                ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
        jackson2JsonRedisSerializer.setObjectMapper(om);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章