Fastjson反序列化远程代码执行漏洞通告

一、漏洞概述

5月23日,绿盟科技CERT监测到Fastjson官方发布公告称在1.2.80及以下版本中存在新的反序列化风险,当存在特定依赖时可绕过默认autoType关闭限制,从而反序列化有安全风险的类,攻击者利用该漏洞可实现在目标机器上的远程代码执行。5月26号,官方为老用户受影响的版本提供了noneautotype版本修复此漏洞,请相关用户尽快采取防护措施。

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-[version].jar文件。

使用maven打包的项目可通过pom.xml查看当前使用的fastjson版本:

注:在Fastjson 1.2.68及之后的版本中,官方添加了SafeMode 功能,可完全禁用autoType。

3.2 工具检测

推荐使用绿盟科技提供的D-Eyes工具进行自动化扫描:

目前已根据漏洞信息开发了本地检查工具《D-Eyes应急响应工具Fastjson检测专版》,适配于Windows与Linux系统使用,相关客户请联系当地服务同事获取。

四、漏洞防护

4.1 官方升级

一、目前官方已发布最新版本修复了该漏洞,请受影响的用户尽快升级版本进行防护,官方下载链接:https://github.com/alibaba/fastjson/releases

升级步骤如下:

  1. 备份原fastjson依赖库,避免升级失败的情况发生。
  2. 将低版本的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 寻求帮助。

二、526日,官方为方便使用老版本的用户兼容安全加固需求,发布了noneautotype版本,与1.2.68及以上版本开启safeMode的效果一样,可完全禁止autotype功能。

https://repo1.maven.org/maven2/com/alibaba/fastjson/1.2.8_noneautotype/

https://repo1.maven.org/maven2/com/alibaba/fastjson/1.2.48_noneautotype/

https://repo1.maven.org/maven2/com/alibaba/fastjson/1.2.54_noneautotype/

https://repo1.maven.org/maven2/com/alibaba/fastjson/1.2.60_noneautotype/

https://repo1.maven.org/maven2/com/alibaba/fastjson/1.2.71_noneautotype/

注:如果需要更多noneautotype版本,请在https://github.com/alibaba/fastjson/issues 提要求。

4.2 产品防护

绿盟科技Web应用防护系统(WAF)已有的规则(27004897)可进行防护,网络入侵防护系统(IPS) 也已针对上述漏洞发布规则升级包,请相关用户升级规则包至最新版,以形成安全产品防护能力。安全防护产品规则编号如下:

安全防护产品 升级包版本号 升级包下载链接 规则编号
IPS 5.6.11. 27602 http://update.nsfocus.com/update/downloads/id/127560 [23991]
5.6.10. 27602 http://update.nsfocus.com/update/downloads/id/127559
WAF 6.0.7.3. 54785 http://update.nsfocus.com/update/downloads/id/127214 27004897
6.0.7.0. 54785 http://update.nsfocus.com/update/downloads/id/127215

产品规则升级的操作步骤详见如下链接:

IPS:https://mp.weixin.qq.com/s/DxQ3aaap8aujqZf-3VbNJg

WAF:https://mp.weixin.qq.com/s/7F8WCzWsuJ5T2E9e01wNog

 

4.3 临时防护措施

若相关用户暂时无法进行升级操作,也可使用下列方式进行缓解:

由于autotype开关的限制可被绕过,请受影响用户升级fastjson至1.2.68及以上版本,通过开启safeMode配置完全禁用autoType。三种配置SafeMode的方式如下:

  1. 在代码中配置:

ParserConfig.getGlobalInstance().setSafeMode(true); 

  1. 加上JVM启动参数:

-Dfastjson.parser.safeMode=true 

如果有多个包名前缀,可用逗号隔开。

  1. 通过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利用链可参考:

声明

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。

绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

Spread the word. Share this post!

Meet The Author