Spring Boot 项目零风险升级 Tomcat 指南:锁定版本也能修复漏洞
【安全圈】Apache Tomcat 中的 CVE-2025-24813 漏洞导致服务器遭受 RCE 和数据泄露:立即更新|cve|应用程序|apache|tomcat_网易订阅【安全圈】Apache Tomcat 中的 CVE-2025-24813 漏洞导致服务器遭受 RCE 和数据泄露:立即更新,服务器,cve,应用程序,apache,tomcathttps://www.163.com/dy/article/JQD3SBQH0511A5GF.html
由于tomcat旧版本存在漏洞,需要升级,大致版本情况如下图所示,有兴趣的可以看下网易的原文。
由于历史原因,项目使用JDK8,springboot版本2.7.18,已经是2.7.x版本下的最新版本,无法通过升级springboot的方式来升级tomcat版本。
目前的tomcat版本为springboot2.7.18内置的9.0.83版本,为了避免出现安全漏洞,至少要升级到9.0.99。
查阅了很多资料以后,建议的做法是在根pom.xml文件下(这里注意要在根pom.xm文件下修改),添加如下代码,会自动覆盖tomcat的版本,然而试过之后并没有成功,重新启动服务后,tomcat版本仍然是9.0.83。
<properties>
<tomcat.version>9.0.102</tomcat.version>
</properties>
于是尝试显示引入新版本tomcat的方式来更新,代码如下。
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
<version>${tomcat.version}</version>
</dependency>
这里有一个误区,就是引入新版本的tomcat,要先在旧版本的spring-boot-starter-web中移除旧的tomcat。笔者在这里浪费了很多时间,尝试了在不同的依赖层级排除掉旧版本的tomcat,重启后一直报错。
后来又查阅了一些资料,加上不断尝试,终于在不排除旧版本的情况下,直接引入新版本,成功升级tomcat版本。查看是否成功可以使用以下命令查看mvn结构树。
mvn dependency:tree | grep tomcat-embed
如果有遇到和我同样问题的朋友,可以尝试下这个解决思路。