天天看點

Apache Log4j 任意代碼執行漏洞

安全風險通告

第1章 安全通告

監測到

經驗證,Apache Struts2、Apache Solr、Apache Druid、Apache Flink 等衆多元件與大型應用均受影響,鑒于此漏洞危害巨大,利用門檻極低,建議盡快參考緩解方案阻止漏洞攻擊。

目前漏洞狀态:

技術細節 PoC 狀态 EXP 狀态 在野利用
已公開 已公開 已公開 已發現

第2章

2.1 漏洞描述

Apache Log4j 是 Apache 的一個開源項目,Apache log4j2 是 Log4j 的更新版本,我們可以控制日志資訊輸送的目的地為控制台、檔案、GUI 元件等,通過定義每一條日志資訊的級别,能夠更加細緻地控制日志的生成過程。

近日,奇安信 CERT 監測到 Apache Log4j 存在任意代碼執行漏洞,經過分析,該元件存在 Java JNDI 注入漏洞,當程式将使用者輸入的資料進行日志,即可觸發此漏洞,成功利用此漏洞可以在目标伺服器上執行任意代碼。經驗證,Apache Struts2、Apache Solr、Apache Druid、Apache Flink 等衆多元件與大型應用均受影響,鑒于此漏洞危害巨大,利用門檻極低,建議盡快參考緩解方案阻止漏洞攻擊。

Apache Log4j 任意代碼執行漏洞

漏洞名稱 Apache Log4j 任意代碼執行漏洞
漏洞類型 代碼執行 風險等級 緊急 漏洞 暫無
公開狀态 已公開 在野利用 已發現
漏洞描述

Apache Log4j 是 Apache 的一個開源項目,通過定義每一條

日志資訊的級别,能夠更加細緻地控制日志生成過程。經過分

析,Log4j2 中存在 JNDI 注入漏洞,當程式将使用者輸入的資料進行 日志記錄時,即可觸發此漏洞,成功利用此漏洞可以在目标伺服器上執行任意代碼。

參考連結 ​​https://github.com/apache/logging-log4j2 ​​

2.2 風險等級

緊急

第3章

Apache Log4j 2.x < 2.15.0-rc2 

第4章

1. 漏洞排查

1)排查應用是否引入了 Apache Log4j2 Jar 包,若存在依賴引入,則可能存在漏洞影響。

Apache Log4j 任意代碼執行漏洞

2) 若程式使用

所示的相關字段,若版本号為小于

Apache Log4j 任意代碼執行漏洞

若程式使用 gradle 打包,檢視 build.gradle 編譯配置檔案,若在dependencies 部分存在 org.apache.logging.log4j 相關字段,且版本号為小于

Apache Log4j 任意代碼執行漏洞

2. 攻擊排查

a) 攻擊者在利用前通常采用 dnslog 方式進行掃描、探測,對于常見利用方式可通過應用系統報錯日志中的

"javax.naming.CommunicationException"、

"javax.naming.NamingException: problem generating object usingobject factory"、"Error looking up JNDI resource"關鍵字進行排查。

b) 流量排查:攻擊者的資料包中可能存在:“${jndi:rmi”、“${jndi:ldap”字樣。

3. 修複建議

a) 更新到最新版本:

請聯系廠商擷取修複後的官方版本:https://github.com/apache/logginglog4j2 ;

請盡快更新 Apache Log4j2 所有相關應用到最新的 log4j-2.15.0-rc2 版本,位址:https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2  

b) 緩解措施:

(1)添加 jvm 啟動參數 -Dlog4j2.formatMsgNoLookups=true

(2)在應用程式的 classpath 下添加 log4j2.component.properties 配置檔案,檔案内容:log4j2.formatMsgNoLookups=True

(3)設定系統環境變量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS設定為

(4)建議 JDK 使用 11.0.1、8u191、7u201、6u211 及以上的高版本

(5)限制受影響應用對外通路網際網路