核彈級漏洞——Apache Log4j 2 遠端程式碼執行漏洞事件詳情及修復方式

Editor發表於2021-12-10

昨晚一直到現在安全圈可謂是沸騰了,所有人都在關注著一個漏洞——Apache Log4j 2遠端程式碼執行。


Apache Log4j 2是一款非常優秀且流行的開源Java日誌記錄元件,在各大專案中有著廣泛應用。利用該漏洞,攻擊者可透過構造惡意請求在目標伺服器上執行任意程式碼,從而實施竊取資料、挖礦、勒索等行為。


事件詳情:

2021年12月9日,Apache官方釋出了緊急安全更新以修復該遠端程式碼執行漏洞,但更新後的Apache Log4j 2.15.0-rc1 版本被發現仍存在漏洞繞過,多家安全應急響應團隊釋出二次漏洞預警。


12月10日凌晨2點,Apache官方緊急釋出log4j-2.15.0-rc2版本,以修復Apache log4j-2.15.0-rc1版本遠端程式碼執行漏洞修復不完善導致的漏洞繞過。


據瞭解,此次漏洞是由 Log4j2 提供的 lookup 功能造成的,該功能允許開發者透過一些協議去讀取相應環境中的配置。但在處理資料時,並未對輸入(如${jndi)進行嚴格的判斷,從而造成注入類程式碼執行。


漏洞影響範圍:

Java類產品:Apache Log4j 2.x < 2.15.0-rc2


受影響的應用及元件(包括但不限於)如下:

Apache Solr、Apache Flink、Apache Druid、Apache Struts2、srping-boot-strater-log4j2等。

更多元件可參考如下連結:

https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core/usages?p=1


緊急補救措施:

(1)設定jvm引數 -Dlog4j2.formatMsgNoLookups=true。

(2)設定log4j2.formatMsgNoLookups=True。

(3)設定系統環境變數 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 為 true。

(4)採用 rasp 對lookup的呼叫進行阻斷。

(5)採用waf對請求流量中的${jndi進行攔截。

(6)禁止不必要的業務訪問外網。


攻擊檢測:

(1)可以透過檢查日誌中是否存在“jndi:ldap://”、“jndi:rmi”等字元來發現可能的攻擊行為。

(2)檢查日誌中是否存在相關堆疊報錯,堆疊裡是否有JndiLookup、ldapURLContext、getObjectFactoryFromReference等與 jndi 呼叫相關的堆疊資訊。


修復建議:

目前漏洞POC已被公開,官方已釋出安全版本,若是使用Java開發語言的系統需要儘快確認是否使用Apache Log4j 2外掛,並儘快升級到最新的 log4j-2.15.0-rc2 版本。


地址:https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2




參考:360網路安全響應中心、 阿里雲應急響應、綠盟科技CERT、 奇安信 CERT、鬥象智慧安全、默安科技



相關文章