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

如何修复Spring Boot项目pom.xml中的安全漏洞警告?

Spring Boot项目依赖安全漏洞解决指南

问题背景

创建Spring Boot项目并修改依赖、执行Maven重载后,出现一系列安全漏洞警告,提示直接依赖或传递依赖存在CVE安全漏洞,需明确漏洞含义及修复方案。

当前pom.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.hank</groupId>
    <artifactId>springboot-mall</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-mall</name>
    <description>springboot-mall</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
            <version>8.0.22</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
</project>

漏洞警告详情(翻译后)

  • 第20行依赖传递引入存在漏洞的ch.qos.logback:logback-classic:1.2.3:CVE-2021-42550,CVSS评分6.6,不受信任数据反序列化漏洞
  • 第20行依赖传递引入存在漏洞的ch.qos.logback:logback-core:1.2.3:CVE-2021-42550,CVSS评分6.6,不受信任数据反序列化漏洞
  • 第20行依赖传递引入存在漏洞的org.springframework:spring-beans:5.2.12.RELEASE:
    • CVE-2022-22965,CVSS评分9.8,代码注入漏洞
    • CVE-2022-22970,CVSS评分5.3,资源无限制分配漏洞
  • 第20行依赖传递引入存在漏洞的org.springframework:spring-context:5.2.12.RELEASE:CVE-2022-22968,CVSS评分5.3,大小写处理不当漏洞
  • 第20行依赖传递引入存在漏洞的org.springframework:spring-core:5.2.12.RELEASE:
    • CVE-2021-22060,CVSS评分4.3,日志输出未正确中立化漏洞
    • CVE-2021-22096,CVSS评分4.3,日志输出未正确中立化漏洞
  • 第24行依赖传递引入存在漏洞的com.fasterxml.jackson.core:jackson-databind:2.11.3:
    • Cxced0c06c-935c,CVSS评分5.9,资源无限制消耗漏洞
    • CVE-2020-36518,CVSS评分7.5,越界写入漏洞
  • 第24行依赖传递引入存在漏洞的org.apache.tomcat.embed:tomcat-embed-core:9.0.41:
    • CVE-2021-25329,CVSS评分7.0,不受信任数据反序列化漏洞
    • CVE-2021-25122,CVSS评分7.5,敏感信息未授权泄露漏洞
    • CVE-2021-33037,CVSS评分5.3,HTTP请求走私漏洞
    • CVE-2021-41079,CVSS评分7.5,输入验证不当漏洞
    • CVE-2021-30639,CVSS评分7.5,异常条件处理不当漏洞
    • CVE-2021-30640,CVSS评分6.5,输出编码/转义不当漏洞
    • CVE-2022-23181,CVSS评分7.0,TOCTOU竞争条件漏洞
  • 第24行依赖传递引入存在漏洞的org.glassfish:jakarta.el:3.0.3:CVE-2021-28170,CVSS评分5.3,表达式语言注入漏洞
  • 第24行依赖传递引入存在漏洞的org.apache.tomcat.embed:tomcat-embed-websocket:9.0.41:CVE-2021-42340,CVSS评分7.5,资源未及时释放漏洞
  • 第24行依赖传递引入存在漏洞的org.springframework:spring-web:5.2.12.RELEASE:
    • CVE-2016-1000027,CVSS评分9.8,不受信任数据反序列化漏洞
    • CVE-2021-22118,CVSS评分7.8,权限管理不当漏洞
  • 第24行依赖传递引入存在漏洞的org.springframework:spring-webmvc:5.2.12.RELEASE:CVE-2016-1000027,CVSS评分9.8,不受信任数据反序列化漏洞
  • 第24行依赖传递引入存在漏洞的org.springframework:spring-expression:5.2.12.RELEASE:CVE-2022-22950,CVSS评分6.5,资源无限制分配漏洞
  • 第29行直接依赖com.h2database:h2:1.4.200存在漏洞:
    • CVE-2018-14335,CVSS评分6.5,文件访问链接解析不当漏洞
    • CVE-2021-42392,CVSS评分9.8,不受信任数据反序列化漏洞
    • CVE-2021-23463,CVSS评分9.1,XML外部实体引用限制不当漏洞
    • CVE-2022-23221,CVSS评分9.8,代码注入漏洞
  • 第34行直接依赖mysql:mysql-connector-java:8.0.22存在漏洞:
    • CVE-2021-2471,CVSS评分5.9,XML外部实体引用限制不当漏洞
    • CVE-2022-21363,CVSS评分6.6,输入验证不当漏洞
  • 第40行依赖传递引入存在漏洞的net.minidev:json-smart:2.3:
    • CVE-2021-27568,CVSS评分9.1,异常条件检查不当漏洞
    • CVE-2021-31684,CVSS评分7.5,越界写入漏洞

修复方案

1. 升级Spring Boot父版本

当前使用的2.3.7.RELEASE是旧版本,该分支的最新稳定补丁版为2.3.12.RELEASE,升级后Spring Boot会自动管理所有传递依赖的安全版本,修复大部分框架类漏洞:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.12.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

2. 升级直接依赖版本

  • H2数据库:将1.4.200升级至最新稳定版(如2.2.224),该版本修复了所有已知高危漏洞:
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
    <version>2.2.224</version>
</dependency>
  • MySQL驱动:将8.0.22升级至8.0.33或更高稳定版,修复XML外部实体等漏洞:
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
    <version>8.0.33</version>
</dependency>

3. 验证依赖更新

执行Maven命令查看依赖树,确认所有依赖版本已更新:

mvn dependency:tree

检查输出中是否还有存在漏洞的版本号,若有则手动在dependencyManagement中指定安全版本。

4. 重新加载Maven项目

在IDE中执行Maven重载操作,或运行以下命令完成依赖更新:

mvn clean install -U

之后重新检查漏洞警告是否全部消除。


内容的提问来源于stack exchange,提问作者劉明翰

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:15:36