You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle中Spring Starter Web引入的Tomcat Embed 9.0.30漏洞修复咨询

解决Spring Boot中Apache Tomcat Embed 9.0.30的Black Duck安全漏洞问题

Hey,我之前处理过一模一样的Black Duck漏洞告警,针对Spring Boot项目里Tomcat Embed的依赖问题,有几个靠谱的解决办法,按优先级给你列出来:

  • 升级Spring Boot版本(最推荐)
    Spring Boot的starter依赖本身就会统一管理所有传递依赖的版本,Tomcat Embed的版本是跟着Spring Boot版本走的。9.0.30的漏洞在后续的Spring Boot版本里已经通过升级Tomcat版本修复了。比如你可以把Spring Boot版本升级到2.2.6.RELEASE及以上(这个版本对应的Tomcat Embed是9.0.33,已经修复了相关漏洞),或者直接升到最新的稳定版。修改你的build.gradle里的Spring Boot插件版本就行:

    plugins {
        id 'org.springframework.boot' version '2.7.14' // 示例稳定版,可按需选择更高版本
        id 'io.spring.dependency-management' version '1.0.15.RELEASE'
        id 'java'
    }
    

    这样依赖管理插件会自动把Tomcat Embed的版本替换成安全的,不用手动调整单个依赖。

  • 手动强制指定Tomcat Embed的安全版本
    如果暂时没法升级Spring Boot版本,那可以在build.gradle里强制指定Tomcat Embed的版本,覆盖传递依赖的旧版本。比如:

    dependencies {
        // 你的其他依赖...
        implementation 'org.springframework.boot:spring-boot-starter-web'
        // 强制指定安全的Tomcat版本
        implementation 'org.apache.tomcat.embed:tomcat-embed-core:9.0.80'
        implementation 'org.apache.tomcat.embed:tomcat-embed-el:9.0.80'
        implementation 'org.apache.tomcat.embed:tomcat-embed-websocket:9.0.80'
    }
    

    或者用dependency management来统一管控版本,更优雅:

    dependencyManagement {
        dependencies {
            dependency 'org.apache.tomcat.embed:tomcat-embed-core:9.0.80'
            dependency 'org.apache.tomcat.embed:tomcat-embed-el:9.0.80'
            dependency 'org.apache.tomcat.embed:tomcat-embed-websocket:9.0.80'
        }
    }
    

    这样所有传递依赖过来的Tomcat组件都会自动使用你指定的安全版本。

  • 切换到其他嵌入式服务器(备选方案)
    如果不想用Tomcat了,Spring Boot还支持Jetty或者Undertow作为嵌入式服务器。你可以先排除Tomcat的依赖,再引入Jetty的starter:

    dependencies {
        implementation('org.springframework.boot:spring-boot-starter-web') {
            exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat'
        }
        implementation 'org.springframework.boot:spring-boot-starter-jetty'
    }
    

    这样项目就会用Jetty替代Tomcat,自然避开Tomcat的漏洞,但记得要测试下项目在Jetty下的兼容性,确保业务功能正常运行。

内容的提问来源于stack exchange,提问作者Rahul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 16:17:36