前几天爆出来的 Spring 漏洞,刚修复完又来?
漏洞名称 | 远程代码执行漏洞 |
严重级别 | 高危 |
影响范围 | 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 及以下版本,那恭喜你,目前不受影响,否则尽快修复、升级保平安。
相关推荐
在构建现代化的Java应用时,Spring Boot框架与Gradle构建工具的组合是常见的选择。本资源包"使用Gradle构建Spring Boot工程系列项目源码"是针对一系列教程的配套源代码,旨在帮助开发者深入理解如何利用Gradle有效地...
本示例"springboot-springsecurity-demo"就是基于这两个组件的深度整合,旨在帮助开发者理解如何在Spring Boot项目中实现安全控制。 首先,让我们来看看核心文件`pom.xml`。这是Maven项目的配置文件,用于管理项目...
"SpringBoot整合Spring Data Elasticsearch的过程详解" SpringBoot整合Spring Data Elasticsearch是将SpringBoot框架与Elasticsearch搜索引擎进行整合,以实现数据的搜索和索引功能。下面将详细介绍SpringBoot整合...
**FCKeditor 2.6.6:一个经典且易集成的在线文本编辑器** FCKeditor是一款在Web开发中广泛使用的开源富文本编辑器,它允许用户在浏览器环境中进行类似Word的文本编辑操作。标题提到的是FCKeditor的2.6.6版本,这是...
因Spring的更新,支持java8的框架下架,整理出的可以直接使用的集成了Web的基础框架,项目分层文件已经创建,方便直接使用创建项目
在“spring-boot-2.6.6.zip”这个压缩包中,我们获得了 Spring Boot 的具体版本 2.6.6,这是一次重要的更新,包含了多项改进和新特性。 Spring Boot 2.6.6 版本的知识点主要包括以下几个方面: 1. **自动配置**:...
Springboot es包版本异常解决方案 本文主要介绍了 Springboot 项目依赖 es 包版本异常的解决方案。文章通过实例代码详细介绍了解决方案,对读者的学习或者工作具有参考价值。 Springboot 项目依赖 es 包版本异常 ...
总结一下,SpringBoot-Swagger2结合了Spring Boot的简洁高效和Swagger2的强大的API文档生成及测试能力,为Java开发者提供了一种强大的工具,使得构建、管理和共享RESTful API变得更加简单和直观。通过合理的注解配置...
标题中的“PyPI 官网下载 | orjson-2.6.6-cp37-cp37m-manylinux1_x86_64.whl”指出这是一个在Python的包索引服务PyPI上发布的软件包。PyPI是Python开发者发布和分享自己编写的开源软件的地方,它允许用户通过pip安装...
Elasticsearch是一个基于Lucene的搜索服务器,Elasticsearch也是使用Java编写的,它的内部使用Lucene做索引与搜索,但是它的目的是使用全文检索变得简单,通过隐藏Lucene的复杂性,取而代之的提供一套简单一致的...
python-2.6.6-66.el6_8.x86_64.rpm!!!!!!!!!!
首先,Python 2.6.6包含了对早期版本的bug修复和性能优化,确保了稳定性和兼容性。这个版本引入了一些新的语法特性,如with语句,它允许开发者更方便地处理资源的获取和释放,如文件操作或数据库连接。此外,它还...
1. **安全风险**:不再接收安全更新,这意味着任何已知的安全漏洞将不会得到修复,这可能使系统暴露于潜在的安全威胁。 2. **软件兼容性**:许多现代的库和框架只支持Python 3,因此,使用2.6.6可能会限制你使用最新...
在2.6.6版本中,Layui修复了一些已知问题,提升了框架的稳定性和兼容性,确保在各种浏览器环境下都能正常工作。同时,可能还引入了新的特性或优化,以满足开发者不断变化的需求。 “jb51.net.txt”可能是关于Layui...
SpringBoot for linux 各个版本,免费下载 spring-boot for linux 各个版本,免费下载 如果不能免费下载,关注我,评论区联系我索要!
spring-boot-2.6.2-sources.jar
需要注意的是,由于Python 2.6.6已不再维护,可能存在安全漏洞和不兼容现代库的问题。因此,除非有特殊需求,建议使用最新且受支持的Python 3版本。对于需要Python 2.x的应用,尽可能选择更新的版本,如Python 2.7,...
SpringBoot 扩展点 EnvironmentPostProcessor EnvironmentPostProcessor 是 SpringBoot 中的一个扩展点,用于在应用程序启动时加载配置属性。通过实现 EnvironmentPostProcessor 接口,可以在应用程序中加载自定义...
同时,也要注意安全性和维护性,因为旧版本可能存在的漏洞未得到修复,且不再接收官方的安全更新。 总之,Python 2.6.6是针对特定场景和需求的解决方案,尤其是当需要`sendkeys`模块时。虽然现在大多数开发工作已经...