在Maven pom.xml中,将log4j 2的所有用法(包括使用log4j 2的依赖项)升级到2.15.0的最简单方法是什么?请参见CVE-2021-44228

hwamh0ep  于 2022-11-06  发布在  Maven
关注(0)|答案(5)|浏览(232)

发现log4j2〈= 2.14.1存在严重安全漏洞(请参阅https://nvd.nist.gov/vuln/detail/CVE-2021-44228)。如何更新Sping Boot 应用程序的pom.xml以确保log4j2的所有(递归)使用都使用版本2.15.0?

d7v8vwbk

d7v8vwbk1#

更新:

  • 2022年1月4日:

Log4J 2.17.1包含CVE-2021-44832的修复程序

  • 2021年12月22日:

Sping Boot2.5.82.6.2已发布,并为logback 1.2.9和Log4J 2.17.0提供了依赖项管理。

操作:

spring-boot“默认情况下”不受CVE-2021-44228(log4shell)的影响。
虽然版本[2 - 2.6.1](任何-starter)依赖于log4j-apislf4j-to-log4j,但Slf4j says
如果您将log4j-over-slf4j.jar与SLF 4J API结合使用,除非底层实现是log4j 2.x,否则您是安全的。
可以肯定的是,

  • maven中,检查以下输出:
mvn dependency:tree -Dincludes='*log4j*'
gradle -q dependencyInsight --dependency log4j

板上有spring-boot-starter-log4j2

我们 * 肯定会受到影响 *(Spring Boot〉1)!
要(通过)更新进行修复,最简单的方法可能是:

  • 梅文:
<properties>
   ...
  <log4j2.version>2.17.1</log4j2.version><!-- as of 2021/12/28 -->
</properties>

...在pom里。

  • Gradler公司:
ext['log4j2.version'] = '2.17.1'

..在建筑.Gradle中,或:

log4j2.version=2.17.1

..在gradle.properties中。
...构建、测试、发布、部署。

链接:

zvokhttg

zvokhttg2#

现在建议使用<log4j2.version>2.16.0</log4j2.version>

oogrdqng

oogrdqng3#

这也将规定spring-boot-starter-log4j 2的log4j 2组件版本。

<dependencyManagement>
    <dependencies>
        ...
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>2.17.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        ...
    </dependencies>
</dependencyManagement>

按照Piotr P. Karwasz的建议,这是一个更好的设置选择。
更新:

<dependencyManagement>
    <dependencies>
        ...
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-bom</artifactId>
            <version>2.17.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        ...
    </dependencies>
</dependencyManagement>

顺便说一下,如果项目的log4j依赖项仅来自spring-boot-starter-log4j 2,它有一个确定的设置方式,请参阅spring blog

<properties>
    <log4j2.version>2.17.0</log4j2.version>
</properties>
x4shl7ld

x4shl7ld4#

一般来说,对于maven项目,您可以使用deps mgmt强制使用log4j-core版本。

<dependencyManagement>
    <dependencies>
        ...
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.17.0</version>
        </dependency>
        ...
    </dependencies>
</dependencyManagement>

在此之后,确保此pom.xml和所有继承的pom.xml定义了log4j deps * 而没有tag*,以便它们都将从这种集中式更改中受益。

vmpqdwk3

vmpqdwk35#

根据apache site,log4j的最低可接受级别现在是2.17.1-缓解措施是升级到Log4j 2.3.2(适用于Java 6)、2.12.4(适用于Java 7)或2.17.1(适用于Java 8及更高版本)。

相关问题