抢占先机
VMware 提供培训和认证,以加速您的进步。
了解更多更新:自从本博客文章发布以来,logback 1.2.9 新版本已经发布。虽然这修复了一个安全问题,但利用的前提条件非常不同,因为它们“需要写入访问 logback 的配置文件”。 Log4J 还发布了新的 2.17.0 版本,修复了 CVE-2021-45046 和 CVE-2021-45105。 Spring Boot
2.5.8
和2.6.2
已经发布,并为 logback 1.2.9 和 Log4J 2.17.0 提供了依赖管理。 Log4J 2.17.1 包含针对 CVE-2021-44832 的修复
正如您可能在新闻中看到的那样,已经报告了针对流行的 Log4J2 库的新的零日漏洞利用,该漏洞可能允许攻击者远程执行代码。 该漏洞已报告为 CVE-2021-44228 针对 log4j-core
jar,并在 Log4J v2.15.0 中修复。
只有当 Spring Boot 用户 将默认日志记录系统切换到 Log4J2 时,才会受到此漏洞的影响。 我们包含在 spring-boot-starter-logging
中的 log4j-to-slf4j
和 log4j-api
jar 本身无法被利用。 只有使用 log4j-core
并在日志消息中包含用户输入的应用程序才容易受到攻击。
我们即将发布的 v2.5.8 和 v2.6.2 版本(预计于 2021 年 12 月 23 日发布)将包含 Log4J v2.17.0,但由于这是一个非常严重漏洞,您可能需要覆盖我们的依赖管理并尽快升级您的 Log4J2 依赖。
对于 Maven 用户,您可以按照 这些说明 并设置 log4j2.version
属性。
例如,如果您使用我们的父 POM,您可以设置 log4j2.version
属性
<properties>
<log4j2.version>2.17.1</log4j2.version>
</properties>
如果您不使用我们的父项,而是导入 spring-boot-dependencies
BOM,则需要使用 <dependencyManagement>
部分
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-bom</artifactId>
<version>2.17.1</version>
<scope>import</scope>
<type>pom</type>
</dependency>
... other dependencies including spring-boot-dependencies
</dependencies>
</dependencyManagement>
要检查覆盖是否已应用,请运行 ./mvnw dependency:list | grep log4j
并检查版本是否为 2.17.1。
对于 Gradle 用户,您可以按照 这些说明 并更新版本属性,导入 BOM 或使用 resolutionStrategy
。
对于大多数用户,设置 log4j2.version
属性就足够了
ext['log4j2.version'] = '2.17.1'
如果您使用 Gradle 的平台支持而不是我们的依赖管理插件,则可以向 Log4J BOM 添加依赖
implementation(platform("org.apache.logging.log4j:log4j-bom:2.17.1"))
如果您不能使用这些方法中的任何一种,那么您可以声明一个 resolutionStrategy
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
if (details.requested.group == 'org.apache.logging.log4j') {
details.useVersion '2.17.1'
}
}
}
无论您选择哪种方法,要检查覆盖是否已应用,您可以运行 ./gradlew dependencyInsight --dependency log4j-core
并查找版本 2.17.1。