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