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>

如果您未使用我們的父項,而是匯入 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 社群中所有即將舉行的活動。

檢視全部