背景
我开源的一个项目中,有朋友提到存在Spring Framework 身份认证绕过漏洞(CVE-2023-20860)。
解决方案是升级spring 框架版本:
- Spring Framework 5.3.X 系列用户建议升级Spring Framework到5.3.26及以上安全版本修复该漏洞
- Spring Framework 6.0.X 系列用户建议升级Spring Framework到6.0.7及以上安全版本修复该漏洞
主要受影响的版本如下:
- 6.0.0 to 6.0.6
- 5.3.0 to 5.3.25
我看了下,项目中依赖的spring boot版本如下:
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.10</version>
尝试2.4.x的其它几个版本,发现其依赖的spring框架都是5.3.x,也不敢冒然升级spring boot大版本,所以考虑只升级依赖的spring 框架.
解决方案
在网上搜了下,没找到想要的解决方案,最后只能自己想办法。
我认为spring boot依赖肯定定义了sping 的版本属性,遵循maven就近原则,我只要在项目中覆盖这个变量就可以达到预期。
然后一级一级往上找,最后在spring-boot-dependencies的定义里找到了:
然后直接在我自己的项目的pom.xml里重新定义这个属性,问题解决:
项目的实际依赖的jar包版本已经是5.3.26: