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

Docker构建检测到CVE-2024-26308漏洞,无直接依赖却存在该问题

问题分析与解决方案

可能的原因

  • 基础镜像自带漏洞依赖:你使用的Docker基础镜像(比如OpenJDK、Maven官方镜像等)本身预装了包含CVE-2024-26308漏洞的Apache Commons Compress版本,这个依赖不属于你的项目代码,所以本地Maven命令查不到。
  • 构建工具插件隐式依赖:Maven的部分插件(如maven-assembly-plugin、maven-shade-plugin等)可能会隐式依赖旧版本的Commons Compress,这类依赖不会出现在项目的业务依赖树中,只会在构建阶段被调用。
  • Docker构建缓存残留:之前构建留下的镜像层可能包含旧版本依赖,即使项目配置更新,缓存的镜像层仍会导致漏洞检测告警。

修复步骤

1. 排查并升级基础镜像

查看Dockerfile中使用的基础镜像标签,确认该镜像是否预装了旧版本的Commons Compress。如果是,直接切换到包含修复版本的最新稳定版镜像(比如更新openjdk镜像的标签至最新LTS版本)。

2. 强制锁定依赖版本

在项目pom.xml的dependencyManagement节点中强制指定Commons Compress的版本为1.26.0及以上,覆盖所有间接依赖的版本:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-compress</artifactId>
            <version>1.26.0</version>
        </dependency>
    </dependencies>
</dependencyManagement>

3. 修复Maven插件的隐式依赖

如果是构建插件依赖旧版本,在pluginManagement中给对应插件指定修复后的Commons Compress版本。以maven-assembly-plugin为例:

<pluginManagement>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.6.0</version>
            <dependencies>
                <dependency>
                    <groupId>org.apache.commons</groupId>
                    <artifactId>commons-compress</artifactId>
                    <version>1.26.0</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</pluginManagement>

4. 清理Docker缓存

执行以下命令清除旧镜像和缓存,确保构建使用最新依赖:

docker system prune -a
docker build --no-cache .

5. 验证修复

构建完成后,用Docker Desktop内置的漏洞扫描功能重新检测,确认CVE-2024-26308告警已消除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 17:52:35