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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章