Spring库的新漏洞:如何知道你是否有风险以及如何应对
最近,Java社区中最受欢迎的库之一Spring库披露了2个与远程代码执行(RCE)有关的漏洞。为了帮助你更容易了解你是否面临这两个漏洞的风险以及采取什么行动,我们对 "Spring4Shell "和 "Spring Cloud Function "的已知细节进行了分解。
漏洞1 - "Spring4Shell" (CVE-2022-22965)
2022年3月29日,社区发现了一系列推文,其中包含一个针对Spring Core(SC)的漏洞概念证明的截图,该漏洞允许对Spring Core的所有版本进行远程代码执行,包括最近发布的版本5.3.17。
哪些应用程序有风险?
目前,只有托管在Tomcat上的应用程序被证实有可能受到这种新的攻击。虽然该漏洞还没有被证明对嵌入式Tomcat Servlet容器或任何其他非Tomcat托管的应用程序成功,但这并不排除该威胁在未来对这些框架成功的可能性。
Spring公司发布了关于该漏洞的官方声明,根据目前对该漏洞的理解,需要满足以下条件才会有漏洞。
- JDK 9或更高版本
- Apache Tomcat作为Servlet容器
- 以传统的WAR形式打包(与Spring Boot的可执行jar相比)。
- spring-webmvc或spring-webflux的依赖性
- Spring框架的5.3.0至5.3.17、5.2.0至5.2.19版本,以及旧版本
"Spring4Shell "的开发是如何进行的?
该漏洞依赖于在方法签名中使用 "数据绑定"(org.springframework.web.bind.WebDataBinder)的请求,这些请求使用了普通旧Java对象(POJO)。

其中Foo类是一个POJO类,可以定义为如下。注意,实际的类并不重要,只要它被类加载器加载就可以了。

当一个请求被这样的方法处理时,类加载器被用来解决这个类。类加载器负责在运行时加载类,而不必先将所有可能的类型预加载到内存中。当一个新的类被使用时,它找出要加载的.jar文件。
你可以直接从Spring公司的博文中找到关于这个漏洞的最新和最深入的信息,包括潜在的修复或解决方法。
漏洞2 - Spring Cloud功能(CVE-2022-22963)。
2022年3月27日,Cyber Kendra披露了Spring云功能中的一个0天远程代码执行(RCE)漏洞的细节,该漏洞不存在补丁。该漏洞的ID为CVE-2022-22963。Spring Expression资源访问漏洞。
哪些应用程序有风险?
该漏洞影响了这些条件下的应用。
- JDK 9或更新版本
- Spring Cloud Functions 3.1.6(或更低)、3.2.2(或更低),或任何不支持的版本
剥削是如何进行的?
Spring Cloud Function为开发者提供了配置如何通过spring.cloud.function.routing-expression属性处理路由的能力,通常通过配置或代码完成。这是一个强大的功能,接受 "Spring表达式语言"(SpEL)。通过这个0日漏洞,我们了解到这个属性可以通过请求的HTTP头来设置,这意味着攻击者可以将SpEL代码直接嵌入他们对RoutingFunction端点的HTTP请求中,从而执行任意代码。
用户应该采取什么措施来减少风险?
Spring已经发布了3.1.7和3.2.3版本来解决这个问题,不允许通过HTTP头来设置这个属性,缓解了这个漏洞。升级到这两个版本后,不需要额外的步骤。
有兴趣了解更多关于我们如何帮助开发人员编写更安全的代码?预订一个演示或探索我们在安全代码教练上的免费安全编码指南。
资料来源
- https://www.lunasec.io/docs/blog/spring-rce-vulnerabilities/
- https://www.rapid7.com/blog/post/2022/03/30/spring4shell-zero-day-vulnerability-in-spring-framework/


最近,Java社区中最受欢迎的库之一Spring库披露了2个与远程代码执行(RCE)有关的漏洞。为了帮助你更容易了解你是否面临这两个漏洞的风险以及采取什么行动,我们对 "Spring4Shell "和 "Spring Cloud Function "的已知细节进行了分解。
漏洞1 - "Spring4Shell" (CVE-2022-22965)
2022年3月29日,社区发现了一系列推文,其中包含一个针对Spring Core(SC)的漏洞概念证明的截图,该漏洞允许对Spring Core的所有版本进行远程代码执行,包括最近发布的版本5.3.17。
哪些应用程序有风险?
目前,只有托管在Tomcat上的应用程序被证实有可能受到这种新的攻击。虽然该漏洞还没有被证明对嵌入式Tomcat Servlet容器或任何其他非Tomcat托管的应用程序成功,但这并不排除该威胁在未来对这些框架成功的可能性。
Spring公司发布了关于该漏洞的官方声明,根据目前对该漏洞的理解,需要满足以下条件才会有漏洞。
- JDK 9或更高版本
- Apache Tomcat作为Servlet容器
- 以传统的WAR形式打包(与Spring Boot的可执行jar相比)。
- spring-webmvc或spring-webflux的依赖性
- Spring框架的5.3.0至5.3.17、5.2.0至5.2.19版本,以及旧版本
"Spring4Shell "的开发是如何进行的?
该漏洞依赖于在方法签名中使用 "数据绑定"(org.springframework.web.bind.WebDataBinder)的请求,这些请求使用了普通旧Java对象(POJO)。

其中Foo类是一个POJO类,可以定义为如下。注意,实际的类并不重要,只要它被类加载器加载就可以了。

当一个请求被这样的方法处理时,类加载器被用来解决这个类。类加载器负责在运行时加载类,而不必先将所有可能的类型预加载到内存中。当一个新的类被使用时,它找出要加载的.jar文件。
你可以直接从Spring公司的博文中找到关于这个漏洞的最新和最深入的信息,包括潜在的修复或解决方法。
漏洞2 - Spring Cloud功能(CVE-2022-22963)。
2022年3月27日,Cyber Kendra披露了Spring云功能中的一个0天远程代码执行(RCE)漏洞的细节,该漏洞不存在补丁。该漏洞的ID为CVE-2022-22963。Spring Expression资源访问漏洞。
哪些应用程序有风险?
该漏洞影响了这些条件下的应用。
- JDK 9或更新版本
- Spring Cloud Functions 3.1.6(或更低)、3.2.2(或更低),或任何不支持的版本
剥削是如何进行的?
Spring Cloud Function为开发者提供了配置如何通过spring.cloud.function.routing-expression属性处理路由的能力,通常通过配置或代码完成。这是一个强大的功能,接受 "Spring表达式语言"(SpEL)。通过这个0日漏洞,我们了解到这个属性可以通过请求的HTTP头来设置,这意味着攻击者可以将SpEL代码直接嵌入他们对RoutingFunction端点的HTTP请求中,从而执行任意代码。
用户应该采取什么措施来减少风险?
Spring已经发布了3.1.7和3.2.3版本来解决这个问题,不允许通过HTTP头来设置这个属性,缓解了这个漏洞。升级到这两个版本后,不需要额外的步骤。
有兴趣了解更多关于我们如何帮助开发人员编写更安全的代码?预订一个演示或探索我们在安全代码教练上的免费安全编码指南。
资料来源
- https://www.lunasec.io/docs/blog/spring-rce-vulnerabilities/
- https://www.rapid7.com/blog/post/2022/03/30/spring4shell-zero-day-vulnerability-in-spring-framework/

最近,Java社区中最受欢迎的库之一Spring库披露了2个与远程代码执行(RCE)有关的漏洞。为了帮助你更容易了解你是否面临这两个漏洞的风险以及采取什么行动,我们对 "Spring4Shell "和 "Spring Cloud Function "的已知细节进行了分解。
漏洞1 - "Spring4Shell" (CVE-2022-22965)
2022年3月29日,社区发现了一系列推文,其中包含一个针对Spring Core(SC)的漏洞概念证明的截图,该漏洞允许对Spring Core的所有版本进行远程代码执行,包括最近发布的版本5.3.17。
哪些应用程序有风险?
目前,只有托管在Tomcat上的应用程序被证实有可能受到这种新的攻击。虽然该漏洞还没有被证明对嵌入式Tomcat Servlet容器或任何其他非Tomcat托管的应用程序成功,但这并不排除该威胁在未来对这些框架成功的可能性。
Spring公司发布了关于该漏洞的官方声明,根据目前对该漏洞的理解,需要满足以下条件才会有漏洞。
- JDK 9或更高版本
- Apache Tomcat作为Servlet容器
- 以传统的WAR形式打包(与Spring Boot的可执行jar相比)。
- spring-webmvc或spring-webflux的依赖性
- Spring框架的5.3.0至5.3.17、5.2.0至5.2.19版本,以及旧版本
"Spring4Shell "的开发是如何进行的?
该漏洞依赖于在方法签名中使用 "数据绑定"(org.springframework.web.bind.WebDataBinder)的请求,这些请求使用了普通旧Java对象(POJO)。

其中Foo类是一个POJO类,可以定义为如下。注意,实际的类并不重要,只要它被类加载器加载就可以了。

当一个请求被这样的方法处理时,类加载器被用来解决这个类。类加载器负责在运行时加载类,而不必先将所有可能的类型预加载到内存中。当一个新的类被使用时,它找出要加载的.jar文件。
你可以直接从Spring公司的博文中找到关于这个漏洞的最新和最深入的信息,包括潜在的修复或解决方法。
漏洞2 - Spring Cloud功能(CVE-2022-22963)。
2022年3月27日,Cyber Kendra披露了Spring云功能中的一个0天远程代码执行(RCE)漏洞的细节,该漏洞不存在补丁。该漏洞的ID为CVE-2022-22963。Spring Expression资源访问漏洞。
哪些应用程序有风险?
该漏洞影响了这些条件下的应用。
- JDK 9或更新版本
- Spring Cloud Functions 3.1.6(或更低)、3.2.2(或更低),或任何不支持的版本
剥削是如何进行的?
Spring Cloud Function为开发者提供了配置如何通过spring.cloud.function.routing-expression属性处理路由的能力,通常通过配置或代码完成。这是一个强大的功能,接受 "Spring表达式语言"(SpEL)。通过这个0日漏洞,我们了解到这个属性可以通过请求的HTTP头来设置,这意味着攻击者可以将SpEL代码直接嵌入他们对RoutingFunction端点的HTTP请求中,从而执行任意代码。
用户应该采取什么措施来减少风险?
Spring已经发布了3.1.7和3.2.3版本来解决这个问题,不允许通过HTTP头来设置这个属性,缓解了这个漏洞。升级到这两个版本后,不需要额外的步骤。
有兴趣了解更多关于我们如何帮助开发人员编写更安全的代码?预订一个演示或探索我们在安全代码教练上的免费安全编码指南。
资料来源
- https://www.lunasec.io/docs/blog/spring-rce-vulnerabilities/
- https://www.rapid7.com/blog/post/2022/03/30/spring4shell-zero-day-vulnerability-in-spring-framework/
最近,Java社区中最受欢迎的库之一Spring库披露了2个与远程代码执行(RCE)有关的漏洞。为了帮助你更容易了解你是否面临这两个漏洞的风险以及采取什么行动,我们对 "Spring4Shell "和 "Spring Cloud Function "的已知细节进行了分解。
漏洞1 - "Spring4Shell" (CVE-2022-22965)
2022年3月29日,社区发现了一系列推文,其中包含一个针对Spring Core(SC)的漏洞概念证明的截图,该漏洞允许对Spring Core的所有版本进行远程代码执行,包括最近发布的版本5.3.17。
哪些应用程序有风险?
目前,只有托管在Tomcat上的应用程序被证实有可能受到这种新的攻击。虽然该漏洞还没有被证明对嵌入式Tomcat Servlet容器或任何其他非Tomcat托管的应用程序成功,但这并不排除该威胁在未来对这些框架成功的可能性。
Spring公司发布了关于该漏洞的官方声明,根据目前对该漏洞的理解,需要满足以下条件才会有漏洞。
- JDK 9或更高版本
- Apache Tomcat作为Servlet容器
- 以传统的WAR形式打包(与Spring Boot的可执行jar相比)。
- spring-webmvc或spring-webflux的依赖性
- Spring框架的5.3.0至5.3.17、5.2.0至5.2.19版本,以及旧版本
"Spring4Shell "的开发是如何进行的?
该漏洞依赖于在方法签名中使用 "数据绑定"(org.springframework.web.bind.WebDataBinder)的请求,这些请求使用了普通旧Java对象(POJO)。

其中Foo类是一个POJO类,可以定义为如下。注意,实际的类并不重要,只要它被类加载器加载就可以了。

当一个请求被这样的方法处理时,类加载器被用来解决这个类。类加载器负责在运行时加载类,而不必先将所有可能的类型预加载到内存中。当一个新的类被使用时,它找出要加载的.jar文件。
你可以直接从Spring公司的博文中找到关于这个漏洞的最新和最深入的信息,包括潜在的修复或解决方法。
漏洞2 - Spring Cloud功能(CVE-2022-22963)。
2022年3月27日,Cyber Kendra披露了Spring云功能中的一个0天远程代码执行(RCE)漏洞的细节,该漏洞不存在补丁。该漏洞的ID为CVE-2022-22963。Spring Expression资源访问漏洞。
哪些应用程序有风险?
该漏洞影响了这些条件下的应用。
- JDK 9或更新版本
- Spring Cloud Functions 3.1.6(或更低)、3.2.2(或更低),或任何不支持的版本
剥削是如何进行的?
Spring Cloud Function为开发者提供了配置如何通过spring.cloud.function.routing-expression属性处理路由的能力,通常通过配置或代码完成。这是一个强大的功能,接受 "Spring表达式语言"(SpEL)。通过这个0日漏洞,我们了解到这个属性可以通过请求的HTTP头来设置,这意味着攻击者可以将SpEL代码直接嵌入他们对RoutingFunction端点的HTTP请求中,从而执行任意代码。
用户应该采取什么措施来减少风险?
Spring已经发布了3.1.7和3.2.3版本来解决这个问题,不允许通过HTTP头来设置这个属性,缓解了这个漏洞。升级到这两个版本后,不需要额外的步骤。
有兴趣了解更多关于我们如何帮助开发人员编写更安全的代码?预订一个演示或探索我们在安全代码教练上的免费安全编码指南。
资料来源
- https://www.lunasec.io/docs/blog/spring-rce-vulnerabilities/
- https://www.rapid7.com/blog/post/2022/03/30/spring4shell-zero-day-vulnerability-in-spring-framework/
资源
安全技能基准测试:简化企业安全设计
寻找有关 "按设计确保安全 "计划成功与否的有意义的数据是众所周知的难题。首席信息安全官(CISO)在试图证明投资回报率(ROI)和安全计划活动在人员和公司层面上的商业价值时,往往会面临挑战。更不用说,企业要深入了解自己的组织是如何以当前的行业标准为基准的,更是难上加难。美国总统的《国家网络安全战略》向利益相关者提出了 "通过设计实现安全和弹性 "的挑战。让 "按设计保证安全 "计划发挥作用的关键不仅在于为开发人员提供确保代码安全的技能,还在于向监管机构保证这些技能已经到位。在本演讲中,我们将分享大量定性和定量数据,这些数据来自多个主要来源,包括从超过 25 万名开发人员那里收集的内部数据点、数据驱动的客户洞察力以及公共研究。利用这些数据点的汇总,我们旨在传达一个跨多个垂直领域的 "按设计保证安全 "计划的现状。报告详细阐述了这一领域目前未得到充分利用的原因、成功的技能提升计划对降低网络安全风险的重大影响,以及消除代码库中各类漏洞的潜力。