又一”核弹级”漏洞?fastjson漏洞影响深度测量

时间:2022-05-25 作者:奇安信技术研究院

分享到:

    2022年5月23日,fastjson官方发布安全通报,1.2.80及以下版本存在反序列化任意代码执行漏洞,在特定条件下可绕过默认autoType关闭限制,可能会导致远程服务器被攻击,漏洞等级为高危,风险影响较大[1]。

    fastjson是Java、Android等平台广泛使用的JSON解析库,大量项目将其作为依赖,可谓Java生态最为常用的基础库之一。此漏洞究竟造成多大的影响?奇安信技术研究院星图实验室利用自研的“天问”软件供应链平台对其进行了深度挖掘分析。

    1►

    fastjson漏洞影响有多广泛?

    在MavenCentral这一Java最重要的仓库中,共有近万个Java包受到fastjson漏洞影响,占包总量的2.13%。

    截至2022年5月24日,我们发现MavenCentral中的9,902个Java包依赖于包含漏洞的fastjson版本,这意味着MavenCentral上约2.13%的软件包至少有一个版本受到此漏洞威胁。如果说去年底爆出log4j远程代码执行漏洞是一颗大型核弹的话(影响了约17,000个Java包,占比约4%),fastjson的漏洞影响不亚于一颗中型核弹了。

    在MavenCentral上,直接依赖了fastjson漏洞版本的Java软件包数量达到了3,845个,占到所有受影响Java包的38.8%,也就是说,有高达61.2%的Java包间接依赖了fastjson(即自身依赖的一个软件包依赖了fastjson)。

又一”核弹级”漏洞?fastjson漏洞影响深度测量

    图1直接依赖漏洞软件包(左)和间接依赖漏洞软件包(右)来源:GoogleSecurityBlog

    2►

    有哪些重要项目受影响?

    分析发现ApacheDubbo、RocketMQ、Beam,阿里巴巴Nacos、Sentinel、京东云JavaSDK等重要项目依赖了含漏洞的fastjson版本,使用这些项目的开发者需要密切关注漏洞修复进展,及时更新到补丁版本。

又一”核弹级”漏洞?fastjson漏洞影响深度测量

    3►

    此漏洞修复困难吗?

    直接使用了fastjson的项目修复不难。

    间接依赖了fastjson的项目,依赖层级越深,修复所需步骤就越多、难度越大。

    图2显示了受影响的Java软件包依赖于fastjson的层级,层级为1代表直接依赖。可以看到,高达61.2%的Java包依赖层级超过1级,有超过500个Java包的依赖层级超过了5级,层级最深的软件包(如图3所示)的依赖深度甚至高达10级。对这些包的修复,需要将依赖链条中的所有层级逐一进行修复,因此难度较大。

    参考log4j漏洞的修复时间,在漏洞披露的一周时间内,仅有大约13%受到影响的软件包得到了修复[2],这也为软件开发者、安全从业者敲响了警钟,可能未来一段时间内,针对fastjson漏洞的攻击将时有发生。

又一”核弹级”漏洞?fastjson漏洞影响深度测量

    图2受影响的Java软件包的依赖层级及对应数量

又一”核弹级”漏洞?fastjson漏洞影响深度测量

    图3top.wboost:webmvc-spring-boot-starter软件包对fastjson的依赖深度达到10级

    4►

    修复建议

    1.更新到1.2.83及以上版本

    可通过Maven包管理工具更新、手动更新至安全修复版本两种方式实现更新,GitHub开源项目最新的安全修复版本下载地址:

    https://github.com/alibaba/fastjson/releases/tag/1.2.83

    2.开启safeMode功能

    fastjson在1.2.68及之后的版本中引入了safeMode,配置safeMode后,无论白名单和黑名单,都不支持autoType,可杜绝反序列化Gadgets类变种攻击(关闭autoType注意评估对业务的影响),有三种方式配置SafeMode[3]:

    (1)在代码中配置

    ParserConfig.getGlobalInstance().setSafeMode(true);

    (2)加上JVM启动参数

    -Dfastjson.parser.safeMode=true

    (3)通过fastjson.properties文件配置

    通过类路径的fastjson.properties文件来配置,配置方式如下:

    fastjson.parser.safeMode=true

    3.升级到fastjsonv2

    fastjson已经开源2.0版本,在2.0版本中,不再为了兼容提供白名单,提升了安全性。fastjsonv2代码已经重写,性能有了很大提升,不完全兼容1.x,升级需要做认真的兼容测试。


    参考链接

    [1]fastjsonsecurityupdate(2020-05-23),https://github.com/alibaba/fastjson/wiki/security_update_20220523.

    [2]UnderstandingtheImpactofApacheLog4jVulnerability,https://security.googleblog.com/2021/12/understanding-impact-of-apache-log4j.html.

    [3]Enablefastjsonsafemode,https://github.com/alibaba/fastjson/wiki/fastjson_safemode.

    “天问”是由奇安信技术研究院星图实验室开发的软件供应链安全分析平台,专注于软件供应链生态的安全风险识别与检测。

    我们目前正在招聘,工作地点覆盖北京、上海、南京、成都等城市,详情请参见:

    https://research.qianxin.com/recruitment/

奇安信 95015网络安全服务热线

95015网络安全服务热线

扫一扫关注

奇安信 在线客服 奇安信 95015

您对奇安信的任何疑问可用以下方式告诉我们

将您对奇安信的任何疑问

用以下方式告诉我们