`
qingyu11068
  • 浏览: 67703 次
文章分类
社区版块
存档分类
最新评论

Spring 官宣高危漏洞 springboot 2.6.6 已修复

 
阅读更多

前几天爆出来的 Spring 漏洞,刚修复完又来?

漏洞 CVE-2022-22965
漏洞名称 远程代码执行漏洞
严重级别 高危
影响范围 Spring Framework
- 5.3.0 ~ 5.3.17
- 5.2.0 ~ 5.2.19
- 老版本及其他不受支持的版本

这次是高危,必须引起重视

用户可以通过数据绑定的方式引发远程代码执行 (RCE) 攻击漏洞,触发的前提条件如下:

  • JDK 9+
  • Apache Tomcat(war 包部署形式)
  • Spring MVC/ Spring WebFlux 应用程序

使用 Spring Boot 开发一般都是打成 jar 包,默认内嵌 Tomcat 形式,这对使用 Docker/ 微服务这种应用特别合适,但也可以切换为 war 包部署,但很少使用,但也不是没有,比如说一般的传统项目,为了兼容老环境,或者运维统一维护 Tomcat 环境,可能也会使用 war 包部署。

所以,如果你使用的是默认的 Spring Boot 可执行 jar 包默认内嵌 Tomcat 部署,则不受影响,但由于这个漏洞的普遍性,可能还有其他方式进行利用。。难道这就是 Early Announcement 的含义?还来,真要搞疯了!

如果你想关注和学习最新、最主流的 Java 技术,可以持续关注公众号Java技术栈,公众号第一时间推送。

解决方案

Spring 用户升级到以下安全版本:

  • Spring 5.3.18+
  • Spring 5.2.20+

Spring Boot 用户升级到以下安全版本:

  • Spring Boot 2.6.6
  • Spring Boot 2.5.12+

麻了麻了!又得升级??这 Spring Boot 2.6.5 刚发布没几天。。。可能由于这个漏洞太过于高危,没有办法,必须升级主版本应对,以免用户使用了带了漏洞的版本。Spring Boot 2.6.6项目 fhadmin.cn

但是,如果不想升级框架主版本,也是可以的,毕竟很多应用不一定会兼容 Spring Boot 最新版本,比较 Spring Cloud 或者其他依赖的底层框架。

Spring Boot 用户可以使用以下方法临时解决:

package car.app;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.web.servlet.WebMvcRegistrations;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.method.annotation.InitBinderDataBinderFactory;
import org.springframework.web.method.support.InvocableHandlerMethod;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
import org.springframework.web.servlet.mvc.method.annotation.ServletRequestDataBinderFactory;

/**
 * 说明:MyApp 
 * 作者:FH Admin
 * from:fhadmin.cn
 */
@SpringBootApplication
public class MyApp {

	public static void main(String[] args) {
		SpringApplication.run(CarApp.class, args);
	}

	@Bean
	public WebMvcRegistrations mvcRegistrations() {
		return new WebMvcRegistrations() {
			@Override
			public RequestMappingHandlerAdapter getRequestMappingHandlerAdapter() {
				return new ExtendedRequestMappingHandlerAdapter();
			}
		};
	}


	private static class ExtendedRequestMappingHandlerAdapter extends RequestMappingHandlerAdapter {
		@Override
		protected InitBinderDataBinderFactory createDataBinderFactory(List<InvocableHandlerMethod> methods) {
			return new ServletRequestDataBinderFactory(methods, getWebBindingInitializer()) {
				@Override
				protected ServletRequestDataBinder createBinderInstance(
						Object target, String name, NativeWebRequest request) throws Exception {
					ServletRequestDataBinder binder = super.createBinderInstance(target, name, request);
					String[] fields = binder.getDisallowedFields();
					List<String> fieldList = new ArrayList<>(fields != null ? Arrays.asList(fields) : Collections.emptyList());
					fieldList.addAll(Arrays.asList("class.*", "Class.*", "*.class.*", "*.Class.*"));
					binder.setDisallowedFields(fieldList.toArray(new String[] {}));
					return binder;
				}
			};
		}
	}
}

总结

总结下这次受影响的用户:

  • JDK 9+
  • Apache Tomcat(WAR 包部署形式)
  • Spring MVC/ Spring WebFlux 应用程序

这次的大漏洞虽然是高危的,国内可能影响面有限。影响的关键还是JDK 9+ 的用户,国外用 JDK 9+ 的比较多,JDK 11 和 JDK8 占据主要阵营,JDK 17+ 也在逐步发力替代 JDK 8。

 

据我了解,国内用 JDK 8 的比较多,JDK 9+ 应该只是少部分群体,如果你用的 JDK 8 及以下版本,那恭喜你,目前不受影响,否则尽快修复、升级保平安。

0
0
分享到:
评论

相关推荐

    使用Gradle 构建spring Boot工程系列项目源码(配合第五篇文章)

    在构建现代化的Java应用时,Spring Boot框架与Gradle构建工具的组合是常见的选择。本资源包"使用Gradle构建Spring Boot工程系列项目源码"是针对一系列教程的配套源代码,旨在帮助开发者深入理解如何利用Gradle有效地...

    springboot-springsecurity-demo

    本示例"springboot-springsecurity-demo"就是基于这两个组件的深度整合,旨在帮助开发者理解如何在Spring Boot项目中实现安全控制。 首先,让我们来看看核心文件`pom.xml`。这是Maven项目的配置文件,用于管理项目...

    SpringBoot整合Spring Data Elasticsearch的过程详解

    "SpringBoot整合Spring Data Elasticsearch的过程详解" SpringBoot整合Spring Data Elasticsearch是将SpringBoot框架与Elasticsearch搜索引擎进行整合,以实现数据的搜索和索引功能。下面将详细介绍SpringBoot整合...

    FCKeditor 2.6.6 可直接使用

    **FCKeditor 2.6.6:一个经典且易集成的在线文本编辑器** FCKeditor是一款在Web开发中广泛使用的开源富文本编辑器,它允许用户在浏览器环境中进行类似Word的文本编辑操作。标题提到的是FCKeditor的2.6.6版本,这是...

    SpringBoot项目2.6.6版本基础框架

    因Spring的更新,支持java8的框架下架,整理出的可以直接使用的集成了Web的基础框架,项目分层文件已经创建,方便直接使用创建项目

    spring-boot-2.6.6.zip

    在“spring-boot-2.6.6.zip”这个压缩包中,我们获得了 Spring Boot 的具体版本 2.6.6,这是一次重要的更新,包含了多项改进和新特性。 Spring Boot 2.6.6 版本的知识点主要包括以下几个方面: 1. **自动配置**:...

    Springboot es包版本异常解决方案

    Springboot es包版本异常解决方案 本文主要介绍了 Springboot 项目依赖 es 包版本异常的解决方案。文章通过实例代码详细介绍了解决方案,对读者的学习或者工作具有参考价值。 Springboot 项目依赖 es 包版本异常 ...

    SpringBoot-Swagger2:Swaage2和Spring Boot示例

    总结一下,SpringBoot-Swagger2结合了Spring Boot的简洁高效和Swagger2的强大的API文档生成及测试能力,为Java开发者提供了一种强大的工具,使得构建、管理和共享RESTful API变得更加简单和直观。通过合理的注解配置...

    PyPI 官网下载 | orjson-2.6.6-cp37-cp37m-manylinux1_x86_64.whl

    标题中的“PyPI 官网下载 | orjson-2.6.6-cp37-cp37m-manylinux1_x86_64.whl”指出这是一个在Python的包索引服务PyPI上发布的软件包。PyPI是Python开发者发布和分享自己编写的开源软件的地方,它允许用户通过pip安装...

    SpringBoot2.x:Elasticsearch快速入门

    Elasticsearch是一个基于Lucene的搜索服务器,Elasticsearch也是使用Java编写的,它的内部使用Lucene做索引与搜索,但是它的目的是使用全文检索变得简单,通过隐藏Lucene的复杂性,取而代之的提供一套简单一致的...

    python-2.6.6-66.el6_8.x86_64.rpm

    python-2.6.6-66.el6_8.x86_64.rpm!!!!!!!!!!

    python官方2.6.6版本msi安装包

    首先,Python 2.6.6包含了对早期版本的bug修复和性能优化,确保了稳定性和兼容性。这个版本引入了一些新的语法特性,如with语句,它允许开发者更方便地处理资源的获取和释放,如文件操作或数据库连接。此外,它还...

    python官方2.6.6.amd64版本msi安装包

    1. **安全风险**:不再接收安全更新,这意味着任何已知的安全漏洞将不会得到修复,这可能使系统暴露于潜在的安全威胁。 2. **软件兼容性**:许多现代的库和框架只支持Python 3,因此,使用2.6.6可能会限制你使用最新...

    Layui前端框架2.6.6

    在2.6.6版本中,Layui修复了一些已知问题,提升了框架的稳定性和兼容性,确保在各种浏览器环境下都能正常工作。同时,可能还引入了新的特性或优化,以满足开发者不断变化的需求。 “jb51.net.txt”可能是关于Layui...

    spring-boot-2.6.6.tar.gz

    SpringBoot for linux 各个版本,免费下载 spring-boot for linux 各个版本,免费下载 如果不能免费下载,关注我,评论区联系我索要!

    spring-boot-2.6.2-sources.jar

    spring-boot-2.6.2-sources.jar

    Python-2.6.6.tgz

    需要注意的是,由于Python 2.6.6已不再维护,可能存在安全漏洞和不兼容现代库的问题。因此,除非有特殊需求,建议使用最新且受支持的Python 3版本。对于需要Python 2.x的应用,尽可能选择更新的版本,如Python 2.7,...

    SpringBoot扩展点EnvironmentPostProcessor.doc

    SpringBoot 扩展点 EnvironmentPostProcessor EnvironmentPostProcessor 是 SpringBoot 中的一个扩展点,用于在应用程序启动时加载配置属性。通过实现 EnvironmentPostProcessor 接口,可以在应用程序中加载自定义...

    python-2.6.6

    同时,也要注意安全性和维护性,因为旧版本可能存在的漏洞未得到修复,且不再接收官方的安全更新。 总之,Python 2.6.6是针对特定场景和需求的解决方案,尤其是当需要`sendkeys`模块时。虽然现在大多数开发工作已经...

Global site tag (gtag.js) - Google Analytics