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

简介: 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 及以下版本,那恭喜你,目前不受影响,否则尽快修复、升级保平安。

目录
相关文章
|
1月前
|
缓存 NoSQL Java
SpringBoot的三种缓存技术(Spring Cache、Layering Cache 框架、Alibaba JetCache 框架)
Spring Cache 是 Spring 提供的简易缓存方案,支持本地与 Redis 缓存。通过添加 `spring-boot-starter-data-redis` 和 `spring-boot-starter-cache` 依赖,并使用 `@EnableCaching` 开启缓存功能。JetCache 由阿里开源,功能更丰富,支持多级缓存和异步 API,通过引入 `jetcache-starter-redis` 依赖并配置 YAML 文件启用。Layering Cache 则提供分层缓存机制,需引入 `layering-cache-starter` 依赖并使用特定注解实现缓存逻辑。
169 1
SpringBoot的三种缓存技术(Spring Cache、Layering Cache 框架、Alibaba JetCache 框架)
|
24天前
|
Java 微服务 Spring
SpringBoot+Vue+Spring Cloud Alibaba 实现大型电商系统【分布式微服务实现】
文章介绍了如何利用Spring Cloud Alibaba快速构建大型电商系统的分布式微服务,包括服务限流降级等主要功能的实现,并通过注解和配置简化了Spring Cloud应用的接入和搭建过程。
SpringBoot+Vue+Spring Cloud Alibaba 实现大型电商系统【分布式微服务实现】
|
2月前
|
监控 Java 应用服务中间件
什么是 Spring Boot,及为什么要用 Spring Boot
**Spring Boot**: 2013年起研,简化Spring笨重配置,集成常用库,开箱即用,少代码配置,专注业务。 **为何选Spring Boot?** 出色基因,快速搭建;单一依赖替多;Java Config简化配置;内嵌Tomcat,简化部署;监控REST化;微服务友好,趋势之选。
90 27
|
27天前
|
安全 Java 数据安全/隐私保护
基于SpringBoot+Spring Security+Jpa的校园图书管理系统
本文介绍了一个基于SpringBoot、Spring Security和JPA开发的校园图书管理系统,包括系统的核心控制器`LoginController`的代码实现,该控制器处理用户登录、注销、密码更新、角色管理等功能,并提供了系统初始化测试数据的方法。
30 0
基于SpringBoot+Spring Security+Jpa的校园图书管理系统
|
30天前
|
安全 Java 数据库
|
30天前
|
JSON 安全 Java
|
2月前
|
Java Spring 容器
Spring Boot 启动源码解析结合Spring Bean生命周期分析
Spring Boot 启动源码解析结合Spring Bean生命周期分析
78 11
|
18天前
|
Java Spring
【Azure 事件中心】Spring Boot 集成 Event Hub(azure-spring-cloud-stream-binder-eventhubs)指定Partition Key有异常消息
【Azure 事件中心】Spring Boot 集成 Event Hub(azure-spring-cloud-stream-binder-eventhubs)指定Partition Key有异常消息
|
2月前
|
XML JSON Java
spring,springBoot配置类型转化器Converter以及FastJsonHttpMessageConverter,StringHttpMessageConverter 使用
spring,springBoot配置类型转化器Converter以及FastJsonHttpMessageConverter,StringHttpMessageConverter 使用
275 1
|
29天前
|
前端开发 Java Spring
Java 新手入门:Spring Boot 轻松整合 Spring 和 Spring MVC!
Java 新手入门:Spring Boot 轻松整合 Spring 和 Spring MVC!
41 0