RHSB-2022-003 Spring Remote Code Execution - (CVE-2022-22963, CVE-2022-22965)
此信息是否有帮助?
执行摘要
红帽产品安全团队已了解到两个安全漏洞,会分别影响到 Spring MVC (CVE-2022-22965) 和 Spring Framework 的 Spring Cloud (CVE-2022-22963) 组件。相关的用于概念验证的可以导致远程代码执行问题的攻击方法已发布,并报告了利用这个漏洞进行攻击的详细信息。
红帽产品安全团队将 CVE-2022-22963 (Spring Cloud) 的严重性级别定为 Critical(关键)。Spring MVC 漏洞 CVE-2022-22965 被它的发现者称为 Spring4Shell,其严重性级别被定为 Important(重要)。
以下红帽产品版本会受到影响。"受影响" 意味着漏洞存在于产品的代码中,没有考虑相关的使用情况和缓解措施。如果产品因为存在漏洞而具有被安全攻击的风险,就可能需要解决相关的漏洞。
Spring Cloud (CVE-2022-22963)
没有产品会受到这个 CVE 的影响
Spring MVC (CVE-2022-22965)
Red Hat Decision Manager 7
Red Hat Process Automation Manager 7
Red Hat Enterprise Virtualization 4
Red Hat AMQ Messaging 6.3
Red Hat AMQ Messaging 7
Red Hat Fuse 6
Red Hat Fuse 7
技术概述
CVE-2022-22965 缺陷存在于 Spring Framework 中,特别是在名为 Spring MVC 和 Spring WebFlux 的两个模块中。攻击者可以将特定参数传递给一个经过特殊构造的恶意请求,并可能访问 Java 虚拟机中通常应该会受到限制的功能。
Spring 提供了更新修复(Spring Framework 5.2.20 和 5.3.18)。相关的详情包括在 Spring.io 稍早的公告中。出于安全的考虑,CVE 公告中指出这个安全漏洞具有“常规性,可能可以通过其他方法被攻击者利用”。
红帽产品安全团队建议使用受影响产品的用户,尽快将相关系统升级到可以解决这个问题的版本。
Spring Cloud 功能中发现 CVE-2022-22963 安全漏洞,攻击者可以通过未经验证的 HTTP 标头 spring.cloud.function.routing-expression
将恶意代码传递给服务器。这可以导致实际数据中的表达式语言代码在 Cloud Function 服务中被任意执行。Spring 已发布了 Spring Cloud Function、3.1.7 和 3.2.3 的修复程序。
受影响的用户应在补丁软件可用时立即对软件进行更新。
缓解方案
对于 CVE-2022-22965,红帽产品安全团队强烈建议受影响的客户在更新可用后更新受影响的产品。对于无法立即更新的用户,可通过以下措施减少风险和暴露情况:
使用 OpenJDK 8 或更低的版本。
将 Spring 部署为可执行文件 jar 而不是一个 WAR 文件。
删除
spring-webmvc
或spring-webflux
依赖项。
对于 CVE-2022-22963,目前还没有其他缓解方案可用,受影响的客户应在补丁软件可用后立即进行更新。
技术细节
Spring MVC 和 Spring WebFlux 中的 CVE-2022-22965 漏洞使用参数数据绑定 ,它将请求数据映射到应用程序可以使用的对象。
此缺陷的报告者提供了一个依赖于 Apache Tomcat 的概念验证;它访问类加载器并更改日志属性,来将 Web shell 放到 Tomcat 的根目录中,并且能够随后调用各种命令。
要使用公布的概念验证中的方法实现安全攻击需要有几个条件:
Java 9 或更新版本
Apache Tomcat 作为 Servlet 容器
打包为 WAR 文件
spring-webmvc
或spring-webflux
依赖项没有针对恶意数据绑定的保护措施(例如:
WebDataBinder
允许列表)
另外,还可能存在其他的利用路径,包括使用 Tomcat 的替代产品的情况。
CVE-2022-22963 安全漏洞存在于 Spring Cloud Function 模块中,攻击者可以通过修改 spring.cloud.function.routing-expression
头来包括特定的恶意表达式语言代码。攻击者可以调用通常不应该被访问的功能,包括运行时 exec 调用。
对受影响产品的更新
我们强烈建议,所有运行受影响版本的红帽产品的用户,在相关勘误可用后尽快进行更新。
用户应立即应用可用的更新并根据需要启用缓解措施。
产品 | 组件 | 公告/更新 [1] |
Red Hat Decision Manager 7 | spring-webmvc | 待处理 |
Red Hat Process Automation Manager 7 | spring-webmvc | 待处理 |
Red Hat AMQ Messaging 6.3 | spring-webmvc | 将不会修复 |
Red Hat AMQ Messaging 7 | spring-webmvc | 待处理 |
Red Hat Fuse 6 | spring-webmvc | 将不会修复 |
Red Hat Fuse 7 | spring-webmvc | 待处理 |
Red Hat Enterprise Virtualization 4 | rhvm-dependencies | 将不会修复 |
[1] 公告/更新链接将在更新发布后添加。
诊断
已开发了一个安全漏洞检测脚本,来确定您的系统当前是否受此漏洞的影响。要验证脚本的真实性,您还可以下载 分离的 OpenPGP 签名。红帽客户门户网站上提供了有关如何使用 GPG 签名进行验证的说明。
Ansible Playbook
此外,我们提供了一个 Ansible playbook 可用于一次性在多个主机上运行检测脚本。playbook 需要一个额外的 vars 文件,用于控制其操作。另外,为 playbook和其变量文件提供了用于验证真实性的 GPG 签名。下载 playbook 及其关联的 var 文件后,编辑 var 文件,以使其适用于您的环境。
您应该指定:
detector_path:检测脚本将扫描存在安全漏洞存档的路径。
detector_dir:playbook 会将检测脚本复制到远程主机上的这个目录中。
detector_run_dir:检测脚本将用于作为临时存储的路径。
要运行 playbook,您需要在命令行中指定两个额外变量:
HOSTS:要扫描的主机或组,在 Ansible 清单中定义。
vars_file:到 vars 文件的路径。
例如:
# ansible-playbook -e HOSTS=all -e vars_file=cve-2022-22963-vars.yml cve-2022-22963-script-runner.yml
常问问题解答
问:具体的应用服务器是否重要?报告主要强调了 Tomcat,对 Wildfly/JBoss 的情况是否不同?
答:虽然在 Spring 文档中没有提到其他官方的 PoC 漏洞,但一些相关人员认为这可能并不是唯一可以被利用的路径。因此,我们不能说其他应用服务器存在安全漏洞,但我们对这个说法并没有百分之百的信心。
即使在一个扁平的类路径中(没有针对每个部署的 classloader),也可以使用 Spring Beans 5.3.17 或更早版本中存在的具有安全漏洞的绑定机制设置 java.lang.ClassLoader#defaultAsertionStatus
标志。虽然 Wildfly、JBoss EAP、Tomcat 等系统本身可能没有包含存在安全漏洞的代码,但红帽建议更新任何打包了 Spring Bean 的应用程序以解决这个 CVE。
问:我使用一个红帽产品(例如 RHEL),它没有在这个页和 CVE 页面中列出。它是否受到影响?
答:如果产品没有在本文档中列出,并没有在 CVE 页中标记为 "Affected(受影响)",则产品不受这些 CVE 的影响。
问:"受影响(Affected)"和"有安全弱点(Vulnerable)"之间有什么区别?
答:“受影响”表示该产品中存在有缺陷的代码。有安全弱点代表可以实际利用产品中存在的相关缺陷对系统进行安全攻击。在实际情况中,完全有可能存在“受影响但没有安全弱点”的情况 - 这通常代表相关的功能已被禁用、没有被公开或已实施了缓解方案等情况。
参考信息
https://tanzu.vmware.com/security/cve-2022-22963
https://tanzu.vmware.com/security/cve-2022-22965
https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement
https://www.rapid7.com/blog/post/2022/03/30/spring4shell-zero-day-vulnerability-in-spring-framework/
https://www.lunasec.io/docs/blog/spring-rce-vulnerabilities/
Comments