fastjson的漏洞解决 |
您所在的位置:网站首页 › 反序列化的修复方法 › fastjson的漏洞解决 |
一、前言
fastjson真是不让人省心,2020年5月28日又报了漏洞。 fastjson的作用: 将javabean序列化为json格式的字符串。将json格式的字符串,反序列化为javabean。 二、fastjson使用过程添加maven依赖: com.alibaba fastjson 1.2.54API使用: String text = JSON.toJSONString(obj); //序列化 VO vo = JSON.parseObject("{...}", VO.class); //反序列化 三、白名单解决反序列化fastjson在将对象进行反序列化的时候,有时候会不成功,于是有了以下方式来解决,多个包名使用逗号隔开: 添加白名单:在代码中添加你要反序列化的javabean:ParserConfig.getGlobalInstance().addAccept(“com.taobao.pac.client.sdk.dataobject.,com.cainiao.”);加上JVM启动参数:-Dfastjson.parser.autoTypeAccept=com.taobao.pac.client.sdk.dataobject.,com.cainiao.在fastjson.properties中添加:fastjson.parser.autoTypeAccept=com.taobao.pac.client.sdk.dataobject.,com.cainiao. 四、打开autotype,解决反序列化如果上面的添加白名单的办法无法奏效,那可以继续通过以下打开autotype的方式: 通过JVM参数控制:-Dfastjson.parser.autoTypeSupport=true代码中设置:ParserConfig.getGlobalInstance().setAutoTypeSupport(true); 五、漏洞问题绕过autoType开关的限制,从而反序列化有安全风险的类,攻击者利用该漏洞可实现在目标机器上的远程代码执行。 六、解决办法一:升级版本直接升级fastjson到1.2.69或1.2.70。 com.alibaba fastjson 1.2.70/1.2.69 七、解决办法二:升级+打开safemode因为漏洞影响的是1.2.68和它以下的版本,在1.2.69和1.2.70版本出现之前,此漏洞只能通过先升级到1.2.68,然后打开safemode完全禁止autotype的方式来解决,safeMode 会完全禁用 autotype,无视白名单,请注意评估对业务影响: 在代码中设置:ParserConfig.getGlobalInstance().setSafeMode(true);加上JVM启动参数:-Dfastjson.parser.safeMode=true通过fastjson.properties文件配置:fastjson.parser.safeMode=true另可通过将有风险的类添加至黑名单进行防护:ParserConfig.getGlobalInstance().addDeny(“类名”); 八、safeMode场景如何做autoType在1.2.68之后的版本,提供了AutoTypeCheckHandler扩展,可以自定义类接管autoType, 通过ParserConfig#addAutoTypeCheckHandler方法注册。 // com.alibaba.fastjson.parser.ParserConfig.AutoTypeCheckHandler /** * @since 1.2.68 */ public interface AutoTypeCheckHandler { Class handler(String typeName, Class expectClass, int features); } // com.alibaba.fastjson.parser.ParserConfig#addAutoTypeCheckHandler |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |