文章目录
-
-
- 一、概述
-
- 依据一:官方主维护
- 依据二:CVE-2022-22965
- 依据三:CVE-2022-22978
- 二、版本选择
-
一、概述
截止(2022-05-26),推荐Spring Boot 2.6.8及以上,如果使用jdk8则可以使用Spring Boot 2.5.14。
Springboot可以依据以下几点进行版本选择。
依据一:官方主维护
截止(2022-05-26)为止,Spring Boot 2.5 、2.6为官方主要维护版本。
发行说明 : https://github.com/spring-projects/spring-boot/wiki
依据二:CVE-2022-22965
0x01漏洞详情
Spring Framework存在远程代码执行漏洞,在 JDK 9+ 上运行的 Spring MVC 或 Spring WebFlux 应用程序可能容易受到通过数据绑定的远程代码执行 (RCE) 的攻击。RCE(remotecommand/code exec cute),远端命令执行,相当于一个命令窗口。发生在2021年的Log4j的漏洞也有类似的状况。
0x02影响范围
- Spring Framework < 5.3.18
- Spring Framework < 5.2.20
0x03同时满足才会受影响
- JDK9及以上版本
- 使用Tomcat服务器
- 以war部署运行
- 使用了spring-webmvc或spring-webflux
0x04处置建议
将Springboot升级到2.6.6。
依据三:CVE-2022-22978
0x01漏洞详情
当SpringSecurity中使用RegexRequestMatcher进行权限配置,且规则中使用带点号的正则表达式时,未经授权的远程攻击者可通过构造恶意数据包绕过身份认证,导致配置的权限验证失效。
0x02影响范围
- Spring Security 5.5.x < 5.5.7
- Spring Security 5.6.x<5.6.4
- SpringSecurity其他低版本同样受影响
0x03处置建议
升级到官方已发布的最新版本:
Spring Security 5.5.x升级至 5.5.7:
https://github.com/spring-projects/spring-security/releases/tag/5.5.7
Spring Security 5.6.x升级至5.6.4 ∶
https://github.com/spring-projects/spring-security/releases/tag/5.6.4
0x04参考链接
https://tanzu.vmware.com/security/cve-2022-22978
0x05版本依赖
Spring Boot | Spring Security | 是否受CVE-2022-22978影响 |
---|---|---|
2.5.13 | 5.5.6 | 是 |
2.5.14 | 5.5.8 | 否(可用) |
2.6.5 | 5.6.2 | 是 |
2.6.7 | 5.6.3 | 是 |
2.6.8 | 5.6.5 | 否(可用) |
二、版本选择
截止(2022-05-26),推荐Spring Boot 2.6.8及以上,如果使用jdk8则可以使用Spring Boot 2.5.14。
-
注意1: SpringBoot2.6以后需要手动设置循环引用。
SpringBoot2.6 正式发布:循环依赖默认禁止。
application.properties
spring.main.allow-circular-references=true
application.yml
spring: main: allow-circular-references:true
-
注意2: Spring Boot 2.5.14 版本默认 resources 为 3.2.0,编译报错,手动降低版本。
问题:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources
解决:pom.xml手动降低版本
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.7</version> </plugin>
-
注意3: Spring Boot 2.5.14内置了netty相关依赖,如果在pom中配置了netty依赖,则会报已经包含了一个兼容版本。
Correct the classpath of your application so that it contains a single, compatible version of io.netty.resolver.dns.DnsNameResolverBuilder
解决:去掉pom.xml中netty依赖