Log4j漏洞修復方案

一、產生原因

Log4j漏洞產生原因是因為Log4j2核心庫中存在一個基於JNDI的任意代碼執行漏洞,通過惡意構造特定的Class路徑變量,攻擊者便可控制JNDI上下文,最終在應用中任意執行代碼。

這個問題的出現是源於Log4j2中的JNDI Lookup,這個Lookup是在默認的情況下啟用的。在高版本的log4j中已經關閉了JNDI Lookup,但1.x版本中這個設置默認是開啟的。

二、漏洞影響範圍

這個漏洞在log4j2.0-2.14.1版本之間,log4j-core組件中存在,當組件中與JNDI Query交互時,便會存在遠程攻擊的可能性。

三、漏洞防禦方案

1、更新log4j版本

參考官方的建議,更新log4j-core組件並且把相關的被動依賴也需跟着更新。更新版本號如下:

log4j-core      2.15.0
log4j-api       2.15.0
log4j-jul       2.15.0
log4j-slf4j-impl        2.15.0
log4j-web       2.15.0
log4j-over-slf4j        2.15.0

2、關閉JNDI Lookup

假如不想更新log4j版本,可關閉JNDI Lookup,可以手動修改配置項,禁用JNDI Lookup來避免這個問題。

<Properties>
    <Property name="log4j2.formatMsgNoLookups">true</Property>
</Properties>

或者直接禁用掉JNDI Lookup:

<Properties>
    <Property name="log4j2.formatMsgNoLookups">true</Property>
</Properties>

<Loggers>
    <Root level="info">
        <AppenderRef ref="File"/>
    </Root>
    <Logger name="org.apache.logging.log4j" level="WARN"/>
    <Logger name="com.acme" level="DEBUG">
        <AppenderRef ref="Console"/>
    </Logger>
</Loggers>

可以發現,關閉JNDI Lookup只需要在log4j2.xml文件中新增一段<Logger name="org.apache.logging.log4j" level="WARN"/>即可。

四、修復的代碼示例

更新log4j-core組件或者禁用掉JNDI Lookup這兩種方法都可以修復這個漏洞。修改log4j2的配置文件,添加一個Logger配置來禁用JNDI Lookup,代碼如下:

<Properties>
    <Property name="log4j2.formatMsgNoLookups">true</Property>
</Properties>
<Loggers>
    <Root level="info">
        <AppenderRef ref="Console"/>
    </Root>
    <Logger name="org.apache.logging.log4j" level="WARN"/>
</Loggers>

此配置省略了默認的<Appenders>標籤,使日誌控制台輸出到終端。

五、總結

本文介紹了Log4j漏洞的產生原因、影響範圍以及漏洞修復方案。為保證代碼安全,建議在項目中使用較新的log4j版本或禁用JNDI Lookup功能。

原創文章,作者:WRBC,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/137721.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
WRBC的頭像WRBC
上一篇 2024-10-04 00:17
下一篇 2024-10-04 00:18

相關推薦

  • KeyDB Java:完美的分布式高速緩存方案

    本文將從以下幾個方面對KeyDB Java進行詳細闡述:KeyDB Java的特點、安裝和配置、使用示例、性能測試。 一、KeyDB Java的特點 KeyDB Java是KeyD…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

    編程 2025-04-29
  • Log4j日誌打印到Systemout.log

    Log4j是Apache的一個強大的日誌組件,可以幫助開發者更好地管理日誌。在Java應用程序中,很多開發者都會選擇使用Log4j來實現日誌輸出。本文將介紹如何使用Log4j將日誌…

    編程 2025-04-28
  • Python性能優化方案

    本文將從多個方面介紹Python性能優化方案,並提供相應的示例代碼。 一、使用Cython擴展 Cython是一個Python編譯器,可以將Python代碼轉化為C代碼,可顯著提高…

    編程 2025-04-28
  • Treck TCP/IP Stack 輸入驗證錯誤漏洞CVE-2020-11901解析

    本文將對Treck TCP/IP Stack 輸入驗證錯誤漏洞CVE-2020-11901進行詳細解析,並提供相關代碼示例。 一、漏洞背景 Treck TCP/IP Stack是一…

    編程 2025-04-27
  • NB設備上傳數據方案

    NB(Narrow Band)是一種物聯網通信技術,可以實現低功耗、寬覆蓋、多連接等特點。本文旨在探討如何使用NB設備上傳數據。在這篇文章中,我們將介紹NB設備上傳數據的基本原理、…

    編程 2025-04-27
  • Python漏洞挖掘全指南

    本文將從多個方面詳細闡述Python漏洞挖掘的相關知識,幫助開發工程師了解並掌握漏洞挖掘的基礎知識和實戰技巧。 一、漏洞類型 漏洞是指誤用或設計上的錯誤,可導致產品、應用或系統中存…

    編程 2025-04-27
  • Android和Vue3混合開發方案

    本文將介紹如何將Android和Vue3結合起來進行混合開發,以及其中的優勢和注意事項。 一、環境搭建 在進行混合開發之前,需要搭建好相應的開發環境。首先需要安裝 Android …

    編程 2025-04-27
  • Rappor——谷歌推出的安全數據收集方案

    Rappor是一種隱私保護技術,可以在保持用戶私密信息的前提下,收集用戶的隨機信號數據。它可以用於應對廣泛的數據收集需求,讓用戶在參與數據收集的過程中感到安全和安心。 一、Rapp…

    編程 2025-04-27
  • Coremail 漏洞詳解

    Coremail是國內主流的企業郵件服務器軟件,2018年曝出多個漏洞。本文將詳細闡述Coremail漏洞的危害,漏洞種類和利用方法。同時提供完整的代碼示例,幫助讀者更加深入地了解…

    編程 2025-04-25

發表回復

登錄後才能評論