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

排查Maven缓存中带漏洞jackson-databind的依赖来源及阻止方案

Maven缓存漏洞依赖排查与阻止下载方案

问题描述

开发机器/构建服务器的Maven缓存中出现带漏洞的jackson-databind版本,被安全扫描标记。已定位涉事项目,但原因不明:

  • 执行mvn dependency:tree无法找到目标jackson-databind版本
  • 执行mvn dependency:resolve-plugins仅显示插件直接依赖,未发现jackson-databind踪迹

求可查看应用、插件全量传递依赖的命令,怀疑是构建环节引入该依赖,但无法确认。

更新信息

添加-Dverbose参数执行依赖树命令后,发现是com.auth0:java-jwt:3.3.0引入了jackson-databind 2.9.2版本——该版本虽因依赖冲突被2.14.3替代,但仍被下载至Maven缓存。求阻止Maven下载被排除依赖的方法。

问题依赖图

[INFO] +- com.duosecurity:duo-universal-sdk:jar:1.1.3:compile
[INFO] |  +- com.squareup.retrofit2:retrofit:jar:2.9.0:compile
[INFO] |  |  \- com.squareup.okhttp3:okhttp:jar:3.14.9:compile
[INFO] |  |     \- com.squareup.okio:okio:jar:1.17.2:compile
[INFO] |  +- com.squareup.retrofit2:converter-jackson:jar:2.9.0:compile
[INFO] |  |  +- (com.squareup.retrofit2:retrofit:jar:2.9.0:compile - omitted for duplicate)
[INFO] |  |  \- (com.fasterxml.jackson.core:jackson-databind:jar:2.10.1:compile - omitted for conflict with 2.14.3)
[INFO] |  +- (com.fasterxml.jackson.core:jackson-core:jar:2.12.4:compile - omitted for conflict with 2.14.3)
[INFO] |  +- com.auth0:java-jwt:jar:3.3.0:compile
[INFO] |  |  +- (com.fasterxml.jackson.core:jackson-databind:jar:2.9.2:compile - omitted for conflict with 2.14.3)
[INFO] |  |  \- (commons-codec:commons-codec:jar:1.11:compile - omitted for conflict with 1.9)
[INFO] |  \- com.squareup.okhttp3:logging-interceptor:jar:4.9.1:compile
[INFO] |     +- (com.squareup.okhttp3:okhttp:jar:4.9.1:compile - omitted for conflict with 3.14.9)
[INFO] |     \- org.jetbrains.kotlin:kotlin-stdlib-jdk8:jar:1.4.10:compile
[INFO] |        +- org.jetbrains.kotlin:kotlin-stdlib:jar:1.4.10:compile
[INFO] |        |  +- org.jetbrains.kotlin:kotlin-stdlib-common:jar:1.4.10:compile
[INFO] |        |  \- org.jetbrains:annotations:jar:13.0:compile
[INFO] |        \- org.jetbrains.kotlin:kotlin-stdlib-jdk7:jar:1.4.10:compile
[INFO] |           \- (org.jetbrains.kotlin:kotlin-stdlib:jar:1.4.10:compile - omitted for duplicate)

解决方案

1. 查看全量依赖(含插件传递依赖)的命令

执行以下命令,可同时打印应用和插件的所有传递依赖,精准定位jackson-databind的所有引入路径:

mvn dependency:tree -Dverbose -Dincludes=com.fasterxml.jackson.core:jackson-databind -Dplugin.dependencies=true

2. 阻止被排除依赖的下载

Maven默认会下载冲突中被替代的依赖,可通过以下两种方式彻底阻止:

方法一:显式排除依赖

在com.auth0:java-jwt:3.3.0的依赖声明中,显式排除其jackson-databind依赖,Maven将不再下载该版本:

<dependency>
    <groupId>com.auth0</groupId>
    <artifactId>java-jwt</artifactId>
    <version>3.3.0</version>
    <exclusions>
        <exclusion>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </exclusion>
    </exclusions>
</dependency>

方法二:用Maven Enforcer插件强制版本

配置Enforcer插件,指定jackson-databind的唯一允许版本,既阻止旧版本下载,又在构建时报错拦截违规依赖:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <version>3.3.0</version>
            <executions>
                <execution>
                    <id>enforce-jackson-version</id>
                    <goals>
                        <goal>enforce</goal>
                    </goals>
                    <configuration>
                        <rules>
                            <bannedDependencies>
                                <excludes>
                                    <exclude>com.fasterxml.jackson.core:jackson-databind:[,2.14.3)</exclude>
                                </excludes>
                                <message>禁止使用jackson-databind 2.14.3以下的漏洞版本</message>
                            </bannedDependencies>
                        </rules>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 02:00:21