Apache Log4j2 遠(yuǎn)程代碼執(zhí)行漏洞(CNVD-2021-95914)修復(fù)
log4j-core 目前存在命令執(zhí)行漏洞,具有非常高的風(fēng)險(xiǎn)。若您目前使用的是 log4j 日志框架,或您的項(xiàng)目?jī)?nèi)有 log4j-core 依賴,且版本在 2.0.0 ~ 2.14.1,建議您及時(shí)修復(fù)該漏洞。
查看方式
您可以通過(guò)以下方式確認(rèn)您的環(huán)境是否需要修復(fù) log4j 漏洞:
查看源碼
因?yàn)?log4j 可能存在間接依賴的情況,無(wú)法從 pom 中確定使用版本,您可以在項(xiàng)目根目錄執(zhí)行如下命令查看 log4j 版本:
mvn compile dependency:tree -Dincludes=org.apache.logging.log4j
查看輸出中 log4j 的版本。例如,如下版本就是 2.12.1:
[INFO] org.example:Demo1:jar:1.0-SNAPSHOT [INFO] \- org.apache.logging.log4j:log4j-core:jar:2.12.1:compile [INFO] \- org.apache.logging.log4j:log4j-api:jar:2.12.1:compile
查看服務(wù)器上的 Jar 包
您可以查看項(xiàng)目服務(wù)器的 Jar 包,確認(rèn)是否依賴 log4j-core:
ls /home/admin/release/run/target/boot/*/BOOT-INF/lib/ | grep log4j-core
/home/admin/release/run/target/boot/*
為 Jar 包的路徑,您需要根據(jù)自己項(xiàng)目修改。
修復(fù)方案
您可以通過(guò)以下任意方式修復(fù) log4j 漏洞,時(shí)間充足的情況下,建議您通過(guò)升級(jí) log4j-core 版本的方式進(jìn)行修復(fù)。
升級(jí) log4j-core 版本
您可以在最外層 pom 的
dependencyManagement
中增加以下內(nèi)容:<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>${version}</version> </dependency>
已修復(fù)漏洞的版本如下:
說(shuō)明為解決不同版本的兼容性問(wèn)題,螞蟻集團(tuán)提供如下 nonelookup2 版本,您可以按需就近使用。
2.6.2_nonelookup2
2.7_nonelookup2
2.8_nonelookup2
2.8.1_nonelookup2
2.8.2_nonelookup2
2.9.0_nonelookup2
2.9.1_nonelookup2
2.10.0_nonelookup2
2.11.0_nonelookup2
2.11.1_nonelookup2
2.11.2_nonelookup2
2.12.0_nonelookup2
2.12.1_nonelookup2
2.13.0_nonelookup2
2.13.1_nonelookup2
2.13.2_nonelookup2
2.13.3_nonelookup2
2.14.1_nonelookup2
示例如下:
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.6.2_nonelookup2</version> </dependency>
排除 log4j-core 依賴
如果您沒有使用 log4j 日志框架,但依賴了 log4j-core。您可以在查出依賴路徑后,在依賴 log4j-core 的
dependency
中增加以下內(nèi)容:<exclusions> <exclusion> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> </exclusion> </exclusions>
屏蔽出問(wèn)題的 lookup 功能
如果您使用了
log4j-core 2.10.0
及以上版本,您可以在 Java 啟動(dòng)參數(shù)增加-Dlog4j2.formatMsgNoLookups=true
配置,以屏蔽出問(wèn)題的 lookup 功能。
問(wèn)題修復(fù)確認(rèn)
依賴確認(rèn)
確認(rèn)依賴是否正確,具體操作,請(qǐng)參見 查看方式。
修復(fù)效果確認(rèn)
嘗試使用命令打印日志,若打印出來(lái)的信息是則符合預(yù)期;若為真實(shí)日期,則配置未生效。
重要請(qǐng)注意檢查日志中是否有使用
${}
,若使用,建議更換其他日志輸出格式。