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);