近日Fastjson Develop Team 发现 fastjson 1.2.80及以下版本存在新的风险。[1]5月23日,Fastjson官方发布漏洞风险通告,声明修复了一处新的反序列化漏洞。
漏洞描述
fastjson已使用黑白名单用于防御反序列化漏洞,经研究该利用在特定条件下可绕过默认autoType关闭限制,攻击远程服务器,风险影响较大。建议使用fastjson的用户尽快采取安全措施保障系统安全。
风险定级
高危(CVSS 3.1 Base Score:8.1)
影响版本
Fastjson <= 1.2.80
修复建议
1. 更新到1.2.83及以上版本;
可通过以下两种方式实现更新:
(1) 手动更新至安全修复版本
从GitHub开源项目官方地址中下载最新的安全修复版本:
https://github.com/alibaba/fastjson/releases/tag/1.2.83
(2) 通过Maven包管理工具更新
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
2. 开启safeMode功能
fastjson在1.2.68及之后的版本中引入了safeMode,配置safeMode后,无论白名单和黑名单,都不支持autoType,可杜绝反序列化Gadgets类变种攻击(关闭autoType注意评估对业务的影响),有三种方式配置SafeMode[2]:
(1) 在代码中配置
ParserConfig.getGlobalInstance().setSafeMode(true);
注意,如果使用new ParserConfig的方式,需要注意单例处理,否则会导致低性能full gc。
(2) 加上JVM启动参数
-Dfastjson.parser.safeMode=true
(3) 通过fastjson.properties文件配置
通过类路径的fastjson.properties文件来配置,配置方式如下:
fastjson.parser.safeMode=true
3. 升级到fastjson v2
fastjson已经开源2.0版本,在2.0版本中,不再为了兼容提供白名单,提升了安全性。fastjson v2代码已经重写,性能有了很大提升,不完全兼容1.x,升级需要做认真的兼容测试。
快速检测
下载并使用OpenSCA cli工具,来检测您的应用中引入的开源组件,审查应用内是否引入该漏洞组件。
- OpenSCA cli:https://github.com/XmirrorSecurity/OpenSCA-cli/releases
- OpenSCA idea插件:https://github.com/XmirrorSecurity/OpenSCA-intellij-plugin/releases
使用方法可移步下列地址查看:
https://opensca.xmirror.cn/docs/v1/start.html
检测结果示例
漏洞库更新
本次OpenSCA云平台(opensca.xmirror.cn)除更新了Fastjson组件漏洞的检测外,同步更新了其他风险等级较高的漏洞。
参考资料
[1] https://github.com/alibaba/fastjson/wiki/security_update_20220523
[2] https://github.com/alibaba/fastjson/wiki/fastjson_safemode
欢迎大家扫码联系小镜
加入OpenSCA社区技术交流群
OpenSCA是悬镜安全旗下源鉴OSS开源威胁管控产品的开源版本,继承了源鉴OSS的多源SCA开源应用安全缺陷检测等核心能力。
OpenSCA用开源的方式做开源风险治理,致力于做软件供应链安全的护航者,守护中国软件供应链安全。
OpenSCA的代码会在GitHub和Gitee持续迭代,欢迎Star和PR,成为我们的开源贡献者,也可提交问题或建议至Issues。我们会参考大家的建议不断完善OpenSCA开源项目,敬请期待更多功能的支持。
GitHub:
https://github.com/XmirrorSecurity/OpenSCA-cli/
Gitee:
https://gitee.com/XmirrorSecurity/OpenSCA-cli/
OpenSCA官网:
https://opensca.xmirror.cn/