Log4J2 漏洞和 Spring Boot

工程 | Phil Webb | 2021 年 12 月 10 日 | ...

更新:自这篇博文发布以来,logback 1.2.9 新版本已发布。虽然这修复了一个安全问题,但利用的前提条件非常不同,因为它们“需要对 logback 的配置文件具有写入访问权限”。Log4J 还发布了一个新的 2.17.0 版本,用于修复 CVE-2021-45046CVE-2021-45105。Spring Boot 2.5.82.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-slf4jlog4j-api jar 无法单独被利用。只有使用 log4j-core 并将用户输入包含在日志消息中的应用程序才易受攻击。

我们即将发布的 v2.5.8 和 v2.6.2 版本(预计于 2021 年 12 月 23 日发布)将采用 Log4J v2.17.0,但由于这是一个非常严重的漏洞,您可能希望覆盖我们的依赖管理,并更早地升级您的 Log4J2 依赖。

Maven

对于 Maven 用户,您可以遵循 这些说明并设置 log4j2.version 属性。

例如,如果您正在使用我们的父 POM,您可以设置 log4j2.version 属性

<properties>
    <log4j2.version>2.17.1</log4j2.version>
</properties>

如果您没有使用我们的父 POM,而是导入了 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

对于 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。

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,助您加速进步。

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看所有