近日,Spring官方披露了一个远程命令执行漏洞(CVE-2022-22965),其框架存在处理流程缺陷,攻击者可远程实现对目标主机的后门文件写入和配置修改,继而通过后门文件访问获得目标主机权限。任何引用Spring Framework的框架均受此漏洞影响,包括但不限于Spring Boot等。
目前该漏洞的POC、EXP等相关代码均已公开,极易遭到利用,危害较大。且由于 Spring MVC 框架在世界范围内应用广泛,火绒工程师提醒用户,使用火绒“CVE-2022-22965 (Spring Boot)漏洞版本检测工具”排查有关系统中是否使用了漏洞版本的Spring Boot组件,如存在相关问题,请尽快升级到最新版本进行防护。
检测工具下载地址:
https://bbs.huorong.cn/thread-101429-1-1.html
Spring是一个比 J2EE 开发更为简单高效的轻量级框架。该框架提供了一个更完善的开发环境,降低了开发者的学习成本,更多的强调了面向对象的编程设计,并降低了接口使用的复杂度。
漏洞描述
官方发布CVE编号为CVE-2022-22965确认该漏洞。在后续的分析中发现该漏洞其实是CVE-2010-1622漏洞的绕过。CVE-2010-1622官方的修复方式是拦截Class.getClassLoader的访问,而在java 9以上的版本中却可以通过Class.getmodule来绕过拦截,于是就有了现在的漏洞。
影响范围
若满足如下两个条件则确定受到漏洞影响:
(1)使用JDK>=9
(2)Spring开发或衍生框架开发(存在Spring-bean*.jar)
Spring-Framework < v5.3.18
Spring-Framework < v5.2.20.RELEASE
注意:此次受漏洞影响的是Spring Framework,任何引用Spring Framework的框架均受此漏洞影响,包括但不限于Spring Boot等。同时,使用Spring框架或衍生框架所构建的网站等应用,且使用JDK版本在9及以上版本的,皆易受此漏洞攻击影响。
Spring Boot漏洞版本检测工具使用方法
Linux环境
在具有webapps目录访问权限的用户登录情况下,在bash中运行 CVE-2022-22965_detector.sh,并在提示位置出输入webapps目录位置。工具可以帮助确认本地网站应用中是否包含、使用了漏洞版本Spring Boot。如果组件存在漏洞,可以通过更新pom.xml中的Spring Boot版本并重新打包、部署以解决此问题(最新版本为2.5.12或2.6.6)。检测到漏洞版本Spring Boot时,相关显示结果:
当未检测到漏洞版本Spring Boot时,相关显示结果:
Windows环境
在具有webapps目录访问权限的用户登录情况下,在CMD窗口中运行CVE-2022-22965-detector.exe,调用时需传入webapps全路径。工具可以帮助确认本地网站应用中是否包含、使用了漏洞版本Spring Boot。如果组件存在漏洞,可以通过更新pom.xml中的Spring Boot版本并重新打包、部署以解决此问题(最新版本为2.5.12或2.6.6)。检测到漏洞版本Spring Boot时,相关显示结果:
当未检测到漏洞版本Spring Boot时,相关显示结果:
解决方案及缓解措施
1.官方方案
升级 Spring Framework 到最新版本,链接如下:
https://github.com/spring-projects/spring-framework/tags
2.缓解措施
方式一:
升级Apache Tomcat组件到10.0.20、9.0.62、8.5.78
方式二:
更改项目源代码,通过全局@InitBinder 注解设置禁止WebDataBinder绑定特定字段
@ControllerAdvice
@Order(Ordered.LOWEST_PRECEDENCE)
public class BinderControllerAdvice {
@InitBinder
public void setAllowedFields(WebDataBinder dataBinder) {
String[] denylist = new String[]{"class.*", "Class.*", "*.class.*", "*.Class.*"};
dataBinder.setDisallowedFields(denylist);
}
}
火绒安全软件随后也将升级产品相关防御模块,防御通过该漏洞产生的威胁。用户可先使用火绒安全“CVE-2022-22965 (Spring Boot)漏洞版本检测工具”进行业务风险自查并进行升级处置。
参考链接:
https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement