本文为翻译文章,原文地址:https://www.wiz.io/blog/addressing-recent-spring4shell-and-cve-2022-22963-rce-vulnerabilities-with-wiz
2022 年 4 月 13 日更新,包括有关 CVE-2022-22965 的最新可用信息、对 Spring Framework 中的依赖项的进一步说明,以及有关此漏洞在云环境中普遍存在的数据。
最近在流行的 Spring Java 库中修补了两个关键的远程代码执行 (RCE) 漏洞,这两个漏洞都引起了不小的轰动:
CVE-2022-22965 (Spring Framework RCE 通过 JDK 9 或更高版本上的数据绑定)
此漏洞影响依赖于 Spring Framework 5.2.19 之前版本以及 5.3.0 到 5.3.17 版本的 Java 软件。开发人员必须将其软件的依赖项更新到 Spring Framework 版本 5.3.18 或 5.2.20,或应用 Spring 建议的多种解决方法中的任何一种。
这个漏洞被称为“Spring4Shell”(与“Log4Shell”相同),迄今为止最受关注。这主要是由于 Spring Framework 库在基于 Java 的软件中的广泛使用,部分原因是与 Log4Shell 的比较存在争议,以及在漏洞首次出现后最初缺乏供应商验证。Praetorian 声称这个漏洞实际上是对 Spring Framework 中一个更老的漏洞 (CVE-2010-1622) 的绕过。
CVE-2022-22963 (Spring Cloud Function RCE 通过恶意 SpEL 表达式)
此漏洞影响依赖于 Spring Cloud Function (SCF) 版本早于 3.1.6 以及版本 3.2.0 到 3.2.2 的 Java 软件。开发人员必须将其软件的依赖项更新到 SCF 版本 3.1.7 或 3.2.3。
最初被评为中等严重性,VMware 此后更改了他们的评估并将此漏洞评为严重。因为这个漏洞也影响了一个(不相关的)Spring库,恰好与Spring4Shell在同一天发布并且已经被分配了一个CVE,这两个漏洞经常被混为一谈。既然 Spring4Shell 有自己的 CVE,我们希望这种混乱会减少。
技术细节
简而言之,运行包含这些库受影响版本的软件的资源可能容易受到特制 HTTP POST 请求的攻击,这些请求允许攻击者在计算机上远程执行代码。这两个漏洞的远程利用要求运行易受攻击的应用程序的资源将被暴露并具有开放的 HTTP 端口。
但是,有一些缓解因素限制了在现实生活中利用这些漏洞。 在 Spring4Shell 的情况下,例如:
这种要求的组合是由于 Spring4Shell 的性质 - 虽然底层错误在技术上位于 spring-beans中,但目前唯一已知的触发它的方法是通过上述 spring-webmvc 或 spring-webflux 库 - 两者都依赖于 spring -beans,可以在以下依赖树中看到:
Spring Framework依赖树的局部视图
此外,目前已知的 Spring4Shell 漏洞利用方法具有以下先决条件,尽管随着新漏洞利用的出现,这些可能会发生很大变化:
所有这些情况可能只存在于少数实际的实际应用程序中,并且到目前为止还没有公开发现(不包括 安全研究人员为展示此漏洞而专门构建的故意易受攻击的应用程序)。但是,该漏洞确实影响了 Spring 网站上的教程中的一些代码示例,并且这些示例可能已被用作某些应用程序的基础,因此目前很难确定 Spring4Shell 的确切影响。
至于 CVE-2022-22963(SCF 漏洞),虽然利用很简单,并且已经在线发布了多个概念验证 (POC) 漏洞利用,但它只能在使用路由功能的应用程序中利用。此外,大多数依赖于 SCF 库的软件可能都在短期的功能即服务 (FaaS) 实例上运行。我们自己的数据表明,这个库在云环境中并不是很普遍,而且确实主要在无服务器资源上找到。因此,尽管许多环境可能有一些受影响的资源,但我们预计此漏洞的实际影响是有限的。
请注意,与 Log4Shell 的情况非常相似,最终用户无法更新易受攻击的第三方应用程序的依赖版本,并且必须等待维护人员为受影响的软件发布补丁。
云环境中 CVE-2022-22965 的流行率
我们的数据显示,大约 63% 的云环境受到 CVE-2022-22965 的影响,尽管在许多情况下,这些易受攻击的资源无法被当前公开的漏洞利用。在所有受影响的资源中,大约 75% 是虚拟机,25% 是容器。
CVE-2022-22965(Spring4Shell)在云环境中的流行率