5月23日,绿盟科技CERT监测到Fastjson官方发布公告称在1.2.80及以下版本中存在新的反序列化风险,在特定条件下可绕过默认autoType关闭限制,从而反序列化有安全风险的类,攻击者利用该漏洞可实现在目标机器上的远程代码执行。
参考链接:https://github.com/alibaba/fastjson/wiki/security_update_20220523
影响范围
受影响版本
Fastjson ≤ 1.2.80
解决方案
-
升级到最新版本
1.2.83
下载链接:https://github.com/alibaba/fastjson/releases
升级步骤如下:
1.备份原fastjson依赖库,避免升级失败的情况发生。
2.将低版本的fastjson库替换为1.2.83版本即可
开发人员可通过配置Maven的方式对应用进行升级并编译发布,配置如下:
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency>
-
safeMode加固
fastjson在1.2.68及之后的版本中引入了safeMode,配置safeMode后,完全禁用autoType。无论白名单和黑名单,都不支持autoType,可杜绝反序列化Gadgets类变种攻击
参考链接:https://github.com/alibaba/fastjson/wiki/fastjson_safemode
三种配置SafeMode的方式如下:
-
在代码中配置
ParserConfig.getGlobalInstance().setSafeMode(true);
-
加上JVM启动参数
-Dfastjson.parser.safeMode=true
-
通过fastjson.properties文件配置
通过类路径的fastjson.properties文件来配置,配置方式如下:
fastjson.parser.safeMode=true
-
-
怎么判断是否用到了autoType
看序列化的代码中是否用到了SerializerFeature.WriteClassName
JSON.toJSONString(obj, SerializerFeature.WriteClassName); // 这种使用会产生@type