fastjson的漏洞解决—2020年5月28日
fastjson
FASTJSON 2.0.x has been released, faster and more secure, recommend you upgrade.
项目地址:https://gitcode.com/gh_mirrors/fastj/fastjson
免费下载资源
·
一、前言
fastjson真是不让人省心,2020年5月28日又报了漏洞。
fastjson的作用:
- 将javabean序列化为json格式的字符串。
- 将json格式的字符串,反序列化为javabean。
二、fastjson使用过程
添加maven依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.54</version>
</dependency>
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。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.70/1.2.69</version>
</dependency>
七、解决办法二:升级+打开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
GitHub 加速计划 / fastj / fastjson
25.69 K
6.51 K
下载
FASTJSON 2.0.x has been released, faster and more secure, recommend you upgrade.
最近提交(Master分支:2 个月前 )
c942c834 - 1 年前
5bc4709b - 1 年前
更多推荐
已为社区贡献3条内容
所有评论(0)