为什么 Maven 下载 log4j-1.2.12.jar?

Sye*_*zer 7 log4j pom.xml maven log4j2 cve-2021-44228

我正在尝试从我的 Maven 项目中删除所有易受攻击的 log4j 依赖项。

我在 pom 中使用log4j 2.16依赖项,并在其他依赖项中添加了 log4j 和 sl4j 的排除项。

尽管如此,每当我运行 Maven 包目标时,它都会下载log4j 1.2.12 jar。

[INFO] Copying 1 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ Test ---
Downloading: https://repo.maven.apache.org/maven2/log4j/log4j/1.2.12/log4j-1.2.12.pom
Downloaded: https://repo.maven.apache.org/maven2/log4j/log4j/1.2.12/log4j-1.2.12.pom (145 B at 0.1 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/log4j/log4j/1.2.12/log4j-1.2.12.jar
Downloaded: https://repo.maven.apache.org/maven2/log4j/log4j/1.2.12/log4j-1.2.12.jar (350 KB at 101.6 KB/sec)
Run Code Online (Sandbox Code Playgroud)

我什至运行了该mvn dependency:tree命令,它只显示log4j 2.16

下载log4j 1.2.12 jar的原因可能是什么?

Pio*_*asz 8

TL;DR:这不是安全问题,但如果您认为是安全问题,请升级您的maven-compiler-plugin.

Maven 插件,即在构建项目时执行实际工作的库也具有依赖项:log4j-1.2.12是您的项目使用的maven-compiler-plugin-3.1的(传递)依赖项。

您可以通过以下方式列出您的插件版本和依赖项:

mvn dependency:resolve-plugins
Run Code Online (Sandbox Code Playgroud)

下载 Mavenlog4j并不意味着它将与您的应用程序打包在一起。

备注:3.1 版本maven-compiler-plugin是一个相当旧的版本。该版本是在默认生命周期绑定中指定的,出于兼容性原因,永远不会升级。不过,您应该在 POM 文件中指定较新的版本,例如:

mvn dependency:resolve-plugins
Run Code Online (Sandbox Code Playgroud)

较新版本maven-compiler-plugin没有log4j:log4j依赖性。

  • 告诉我们的老板。我们公司正在扫描所有服务器是否存在易受攻击的 log4j jar,并且我们已被标记。依赖性似乎是根深蒂固的。 (3认同)