【高危漏洞通告】Spring Framework 远程代码执行 (CVE-2022-22965)漏洞通告

   一、 漏洞情况 Spring 框架(Framework)是一个开源的轻量级 J2EE 应用程序开发框架,提供了 IOC、 AOP 及 MVC 等功能,解决了程序人员在开发中遇到的常见问题,提高了应用程序开发便捷度 和软件系统构建效率。
  2022 年 3 月 31 日,Spring 官方发布安全公告,披露 Spring Framework 远程代码执行 漏洞(CVE-2022-22965)。由于 Spring 框架存在处理流程缺陷,攻击者可在远程条件下, 实现对目标主机的后门文件写入和配置修改,继而通过后门文件访问获得目标主机权限。使用 Spring 框架或衍生框架构建网站等应用,且同时使用 JDK 版本在 9 及以上版本的,易受此漏 洞攻击影响。目前 PoC 已公开,请相关用户尽快采取措施进行排查与防护。

  二、 漏洞等级 高危
  三、 漏洞影响范围 受影响的版本: JDK 版本号在 9 及以上,且使用了 Spring 框架或衍生框架的系统。

  • Spring Framework 5.3.x < 5.3.18
  • Spring Framework 5.2.x < 5.2.20

安全版本:

  • Spring Framework = 5.3.18
  • Spring Framework = 5.2.20

  四、 漏洞检测方法 根据漏洞利用条件,

  可通过以下顺序进行逐项排查:

  • 1、检测是否使用 Spring 框架,若未使用,则不存在该漏洞。 由于 Java 项目存在打包方式各异、Spring Bean 常作为基础组件 Lib 进行打包、非范性命 名等情况,推荐使用自动化迭代解压 jar 的方式同时对 spring-beans-*.jar 与 CachedIntrospectionResults.class 进行匹配式搜索。如果存在匹配,则说明使用了 Spring 框架。
  • 2、检查项目是否使⽤Spring 参数绑定,若未使用,则不存在该漏洞。 由于该漏洞需要利用 SpringMVC 的参数绑定,因此项目相关开发人员若未使用参数绑定, 则不受该漏洞影响。
  • 3、检查中间件使用的 JDK 版本,若版本号小于 9,则不存在该漏洞。 首先通过系统进程,确认中间件使用的 JDK 路径,并在命令行执行“java -version”获取 当前使用的 JDK 版本。
  • 4、检查当前使用的中间件是否为 Tomcat,若未使用 Tomcat,则暂不受该漏洞影响。 目前公开的漏洞利用代码只针对 Tomcat 中间件,但不排除后续有新的利用代码出现,因 此非 Tomcat 中间件,仍存在风险可能性。
  • 5、检查 Tomcat 是否启用了 AccessLog,若未启用,则暂不受该漏洞影响。 目前公开的漏洞利用代码是通过覆盖 Tomcat 的日志相关配置实现后门文件写入,因此若 未启用 AccessLog,则暂不受该漏洞影响,但不排除后续有新的利用方式出现。在 server.xml
    配置文件中,通过 org.apache.catalina.valves.AccessLogValve 关键字可定位到 AccessLog 相关配置。

  五、 漏洞修复建议

  目前,Spring 官方已发布新版本完成漏洞修复,请尽快自查并及时升级至最新版本:

https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement https://github.com/spring-projects/spring-framework/tags