fastjson之CVE-2022-25845漏洞
最近,在使用IDEA开发的时候遇到了一个关于fastjson库的警告——CVE-2022-25845。该漏洞目前在1.2.83版本后已经修复,因此使用该版本以上的依赖,IDEA是不会出现这个情况的。
漏洞复现参考:https://jfrog.com/blog/cve-2022-25845-analyzing-the-fastjson-auto-type-bypass-rce-vulnerability/
发现警告
在使用1.2.83版本的fastjson时,IDEA出现如下警告:
Vulnerable API usage
CVE-2022-25845 9.8 Deserialization of Untrusted Data vulnerability with High severity found
CVE-2022-25845 9.8 Deserialization of Untrusted Data vulnerability with High severity found
Results powered by Checkmarx(c)
大意为:使用了易受攻击的API,CVE-2022-25845为漏洞版本号,该依赖这个警告信息是通过安全扫描工具如Checkmarx检测出来的。
原因
CVE-2022-25845是一个关于“不信任数据的反序列化”的漏洞,其CVSS(通用漏洞评分系统)评分高达9.8,属于非常严重的级别。这个漏洞的根本原因在于fastjson在处理JSON数据反序列化时的实现缺陷。
具体漏洞详情见参考文件,在文章开头。
解决
解决方法
- 升级fastjson库
最直接的解决方法是升级到修复了该漏洞的fastjson版本(1.2.83以上),更新项目中的pom.xml
文件。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<!-- 替换为修复了CVE-2022-25845的版本号 -->
<version>最新安全版本</version>
</dependency>
- 使用其他库
如果项目允许,也可以考虑使用其他更安全的JSON处理库,如Jackson或Gson - 安全配置
如果无法立即升级,可以通过以下安全配置来减少风险:
- 禁用autoType功能:通过设置
ParserConfig.getGlobalInstance().setAutoTypeSupport(false);
来禁用autoType。 - 限制可以反序列化的类:通过配置白名单来限制可以反序列化的类。
- 输入验证
对所有外部输入进行严格的验证,确保输入数据符合预期格式,并且不包含任何可能导致安全问题的内容。