一、漏洞概述
5月23日,绿盟科技CERT监测到Fastjson官方发布公告称在1.2.80及以下版本中存在新的反序列化风险,在特定条件下可绕过默认autoType关闭限制,从而反序列化有安全风险的类,攻击者利用该漏洞可实现在目标机器上的远程代码执行。请相关用户尽快采取防护措施。
Fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。由于具有执行效率高的特点,应用范围广泛。
参考链接:
https://github.com/alibaba/fastjson/wiki/security_update_20220523
二、影响范围
受影响版本
- Fastjson ≤ 1.2.80
不受影响版本
- Fastjson = 1.2.83
三、漏洞检测
3.1 人工检测
相关用户可使用以下命令检测当前使用的Fastjson版本:
lsof | grep fastjson
注:在Fastjson 1.2.68及之后的版本中,官方添加了SafeMode 功能,可完全禁用autoType。
四、漏洞防护
4.1 官方升级
目前官方已在最新版本1.2.83中修复了该漏洞,请受影响的用户尽快升级版本进行防护,官方下载链接:https://github.com/alibaba/fastjson/releases
升级步骤如下:
- 备份原fastjson依赖库,避免升级失败的情况发生。
- 将低版本的fastjson库替换为2.83版本即可
开发人员可通过配置Maven的方式对应用进行升级并编译发布,配置如下:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
注:该版本涉及autotype行为变更,在某些场景会出现不兼容的情况,若遇到问题可以到 https://github.com/alibaba/fastjson/issues 寻求帮助。
4.2 临时防护措施
若相关用户暂时无法进行升级操作,也可使用下列方式进行缓解:
由于autotype开关的限制可被绕过,请受影响用户升级fastjson至1.2.68及以上版本,通过开启safeMode配置完全禁用autoType。三种配置SafeMode的方式如下:
- 在代码中配置:
ParserConfig.getGlobalInstance().setSafeMode(true);
- 加上JVM启动参数:
-Dfastjson.parser.safeMode=true
如果有多个包名前缀,可用逗号隔开。
- 通过properties文件配置:
通过类路径的fastjson.properties文件来配置,配置方式如下:
fastjson.parser.safeMode=true
参考官方文档:https://github.com/alibaba/fastjson/wiki/fastjson_safemode
另可通过将有风险的类添加至黑名单进行防护:
ParserConfig.getGlobalInstance().addDeny("类名");
https://github.com/alibaba/fastjson/commit/560782c9ee12120304284ba98b61dc61e30324b3利用链可参考:
声明
本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。
绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。