fastjson的漏洞解决

您所在的位置:网站首页 反序列化的修复方法 fastjson的漏洞解决

fastjson的漏洞解决

2024-06-13 04:46| 来源: 网络整理| 查看: 265

一、前言

fastjson真是不让人省心,2020年5月28日又报了漏洞。

fastjson的作用:

将javabean序列化为json格式的字符串。将json格式的字符串,反序列化为javabean。 二、fastjson使用过程

添加maven依赖:

com.alibaba fastjson 1.2.54

API使用:

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