Home >> Blog >> 什麼是 Log4j?
什麼是 apache log4j?
Log4Shell 是一個影響數百萬台電腦的網際網路漏洞,它涉及一個不起眼但幾乎無處不在的軟體 Log4j。該軟體用於記錄在各種電腦系統中進行的各種活動。
美國網絡安全和基礎設施安全局局長 Jen Easterly 稱 Log4Shell 是她職業生涯中見過的最嚴重的漏洞。已經有數十萬甚至數百萬次嘗試利用該漏洞。
那麼,這個不起眼的網際網路基礎設施是什麼,黑客如何利用它,又會引發什麼樣的混亂呢?

Log4j 是做什麼的?
Log4j 記錄事件——錯誤和常規系統操作——並將有關它們的診斷消息傳達給系統管理員和用戶。它是Apache Software Foundation提供的開源軟體。
Log4j 在工作中的一個常見示例是當您輸入或單擊錯誤的 Web 鏈接並收到 404 錯誤消息時。運行您嘗試訪問的 Web 鏈接的域的 Web 伺服器會告訴您沒有這樣的網頁。它還在使用 Log4j 的伺服器系統管理員的日誌中記錄該事件。
整個軟體應用程式都使用類似的診斷消息。例如,在在線遊戲《我的世界》中,伺服器使用 Log4j 記錄活動,例如使用的總內存和輸入到控制台的用戶命令。
Log4Shell 是如何工作的?
Log4Shell 通過濫用 Log4j 中的一項功能來工作,該功能允許用戶指定自定義程式碼來格式化日誌消息。例如,此功能允許 Log4j 不僅記錄與每次嘗試登錄伺服器相關聯的用戶名,還記錄此人的真實姓名,如果單獨的伺服器擁有鏈接用戶名和真實姓名的目錄。為此,Log4j 伺服器必須與持有真實姓名的伺服器進行通信。
不幸的是,這種程式碼不僅可以用於格式化日誌消息。Log4j 允許第三方伺服器提交可以在目標電腦上執行各種操作的軟體程式碼。這為惡意活動打開了大門,例如竊取敏感資訊、控制目標系統以及將惡意內容傳遞給與受影響伺服器通信的其他用戶。
利用 Log4Shell 相對簡單。我能夠在我的Ghidra副本中重現該問題,這是一個安全研究人員的逆向工程框架,只需幾分鐘。使用此漏洞的門檻非常低,這意味著更多有惡意的人可以使用它。
Log4j 無處不在
關於 Log4Shell 的主要擔憂之一是 Log4j 在軟體生態系統中的地位。日誌記錄是大多數軟體的基本功能,這使得Log4j 非常普遍。除了 Minecraft 等流行遊戲外,它還用於 Apple iCloud 和 Amazon Web Services 等雲服務,以及從軟體開發工具到安全工具的各種程式。
這意味著黑客有大量目標可供選擇:家庭用戶、服務提供商、源程式碼開發人員甚至安全研究人員。因此,雖然像亞馬遜這樣的大公司可以快速修補他們的網絡服務以防止黑客利用它們,但還有更多的組織需要更長時間來修補他們的系統,有些甚至可能不知道他們需要這樣做。
可以造成的傷害
黑客正在通過網際網路掃描以查找易受攻擊的伺服器並設置可以傳遞惡意負載的機器。為了進行攻擊,他們查詢服務(例如,Web 伺服器或是SEO search engine optimization 分析伺服器)並嘗試觸發日誌消息(例如,404 錯誤)。該查詢包括惡意製作的文本,Log4j 將其作為指令處理。
這些指令可以創建一個反向shell,允許攻擊伺服器遠程控制目標伺服器,或者它們可以使目標伺服器成為殭屍網絡的一部分。殭屍網絡使用多台被劫持的電腦代表黑客執行協調行動。
大量黑客已經在嘗試濫用 Log4Shell。這些範圍從鎖定我的世界伺服器的勒索軟體團伙到試圖挖掘比特幣的黑客組織以及與中國和朝鮮有關的黑客試圖從其地緣政治對手那裡獲取敏感資訊。比利時國防部報告稱,其電腦正受到使用 Log4Shell的攻擊。
儘管該漏洞於 2021 年 12 月 10 日首次引起廣泛關注,但人們仍在尋找通過這種機製造成傷害的新方法。
止血
很難知道 Log4j 是否正在任何給定的軟體系統中使用,因為它通常被捆綁為其他軟體的一部分。這需要係統管理員清點他們的軟體以識別其存在。如果有些人甚至不知道他們有問題,那麼根除漏洞就困難得多。
Log4j 的多種用途的另一個結果是沒有一種萬能的解決方案來修補它。根據 Log4j 在給定係統中的合併方式,修復將需要不同的方法。它可能需要像某些 Cisco 路由器那樣進行批發系統更新,或者像在Minecraft中那樣更新到新版本的軟體,或者為那些無法更新軟體的人手動刪除易受攻擊的程式碼。
Log4Shell 是軟體供應鏈的一部分。就像人們購買的實物一樣,軟體在最終成為最終產品之前要經過不同的組織和軟體包。當出現問題時,軟體通常不會經過召回過程,而是“打補丁”,意思是固定在適當的位置。
然而,鑑於 Log4j在軟體產品中以多種方式存在,傳播修復需要 Log4j 開發人員、使用 Log4j 的軟體開發人員、軟體分銷商、系統運營商和用戶的協調。通常,這會在 Log4j 程式碼中可用的修復程式與人們的電腦實際關閉漏洞之門之間引入延遲。
對軟體修復時間的一些估計通常從幾周到幾個月不等。但是,如果過去的行為預示著未來的表現,那麼 Log4j 漏洞很可能會在未來幾年出現。
作為用戶,您可能想知道如何處理所有這些問題。不幸的是,很難知道您正在使用的軟體產品是否包含 Log4j,以及它是否使用了易受攻擊的軟體版本。但是,您可以通過注意電腦安全專家的常見說法來提供幫助:確保您的所有軟體都是最新的。