前几天爆出来的 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);}@Beanpublic WebMvcRegistrations mvcRegistrations() {return new WebMvcRegistrations() {@Overridepublic RequestMappingHandlerAdapter getRequestMappingHandlerAdapter() {return new ExtendedRequestMappingHandlerAdapter();}};}private static class ExtendedRequestMappingHandlerAdapter extends RequestMappingHandlerAdapter {@Overrideprotected InitBinderDataBinderFactory createDataBinderFactory(List<InvocableHandlerMethod> methods) {return new ServletRequestDataBinderFactory(methods, getWebBindingInitializer()) {@Overrideprotected 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 及以下版本,那恭喜你,目前不受影响,否则尽快修复、升级保平安。

Spring 官宣高危漏洞 springboot 2.6.6 已修复相关推荐

  1. Spring官宣网传大漏洞,附解决方案!网传方案有隐患,建议加固!

    Spring沦陷了!这样的标题这几天是不是看腻了?然而,仔细看看都是拿着之前的几个毫不相干的CVE来大吹特吹.所以,昨天发了一篇关于最近网传的Spring大漏洞的文章,聊了聊这些让人迷惑的营销文.以及 ...

  2. 突发!Spring Cloud 爆高危漏洞。。赶紧修复!!

    Spring Cloud 突发漏洞 Log4j2 的核弹级漏洞刚告一段落,Spring Cloud Gateway 又突发高危漏洞,又得折腾了... 2022年3月1日,Spring官方发布了关于Sp ...

  3. Spring Cloud 爆高危漏洞!!!

    今日推荐 最适合晚上睡不着看的 8 个网站,建议收藏哦 23 种设计模式的通俗解释,虽然有点污,但是秒懂请立即卸载这款 IDEA 插件!SQL自动检查神器,再也不用担心SQL出错了,自动补全.回滚等功 ...

  4. Spring官宣,干掉原生JVM!

    你知道的越多,不知道的就越多,业余的像一棵小草! 成功路上并不拥挤,因为坚持的人不多. 编辑:业余草 推荐:https://www.xttblog.com/?p=5182 本文翻译自 Spring 官 ...

  5. 如何利用Spring官网一键生成SpringBoot项目

    前言 在平日的学习工作中,有可能是公司需要得重新搭建一个新的SpringBoot项目,也有可能是开发自己想新建一个项目用来集成测试一些技术栈,无论出于何种目的,能快速搭建一个空的SpringBoot项 ...

  6. 准官宣?余承东证实华为已有自研操作系统

    3月10日,华为消费者业务CEO余承东在接受德国媒体<世界报>的采访中表示:华为确实已经准备了一套自研的操作系统,但这套系统是以防未来一旦不能使用Android或Windows等系统的Pl ...

  7. Spring 官宣,干掉原生 JVM!

    Spring 团队日前发布了 Spring Native Beta 版.通过 Spring Native,Spring 应用将有机会与 GraalVM 原生镜像的方式运行.为了更好地支持原生运行,Sp ...

  8. Spring 官宣,要干掉原生 JVM!

    原文:spring.io/blog/2021/03/11/announcing-spring-native-beta Spring 团队日前发布了 Spring Native Beta 版.通过 Sp ...

  9. Spring官宣,干掉原生 JVM!硬气啊!

    来源│spring.io/blog/2021/03/11/announcing-spring-native-beta Spring 团队日前发布了 Spring Native Beta 版.通过 Sp ...

最新文章

  1. python install scikit-image后,报错ImportError: DLL load failed: 找不到指定的模块
  2. java写出文本文档乱码_对象流如何写出到文件以及为什么乱码
  3. 编程笔试(解析及代码实现):序列重排之给一个长度为n的序列A,求找出某种排列方式使得相邻两个数的差值之和最大并求出该最大值
  4. ceph pg_num 数值计算
  5. spool命令、创建一个表,创建并且copy表,查看别的用户下的表,rowid行地址 索引的时候使用,表的增删改查,删除表,oracle的回收站
  6. 《R语言数据分析与挖掘实战》——3.2 数据特征分析
  7. Bootstrap 分页导航的尺寸
  8. CUDA TOOlkit Programming Guide 2. Programming Model
  9. 20210424:力扣第237周周赛(下)
  10. Spring AOP失效之谜
  11. MySQL备份---lvm snapshot
  12. 移动磁盘修复、格式化【微PE】
  13. 无线上网认证之Portal认证——企业WiFi管家
  14. 【高项备考】质量管理的质量管理工具学习
  15. URL Schemes 程序跳转
  16. jdk文档下载(html格式)
  17. 【软件测试】翻了下招聘APP只会点点点,很慌......测试业务?技术?
  18. c++写俄罗斯方块小游戏
  19. Python中的getattr、__getattr__、__getattribute__、__get__
  20. 命令模式——经营烧烤摊

热门文章

  1. JSP重定向和转发的区别
  2. javascript 模板系统 ejs v1
  3. 安装配置postman及插件
  4. “航天组”新赛道设计邀请赛
  5. python分布式日志收集系统_分布式日志收集系统Scribe原理
  6. 车载SOA软件架构:建模语言(SoaML)
  7. Recast Demo中BVH树的构建
  8. Floodlight官方文档(一):floodlight架构
  9. 阻止事件冒泡和阻止默认事件的方法
  10. Oracle Sysdate 时间计算 年月日时分秒