Java 庫 Log4j 中臭名昭著的漏洞的緊急補丁並非萬無一失。 Apache 軟件基金會正在發布一個新版本,以一勞永逸地修復該漏洞。
廣受歡迎的 Java 庫中的一個漏洞正在撼動全球 IT 環境。 據估計,該庫存在於大多數企業環境中。
Log4j 主要用於日誌記錄。 應用程序中的事件可以使用註釋進行註冊。 考慮在登錄嘗試後打印出登錄詳細信息。 或者,對於 Java 中的 Web 應用程序,用戶嘗試連接的瀏覽器的名稱。
後面的例子很常見。 在這兩種情況下,外部用戶都會影響 Log4j 輸出的日誌。 濫用這種影響是可能的。 4 年 13 月 2013 日至 5 年 2021 月 XNUMX 日之間的任何 LogXNUMXj 版本的日誌都能夠指示 Java 應用程序從本地設備上的遠程服務器運行代碼。
自 2013 年以來,Log4j 一直在處理一個 API:JNDI,即 Java 命名和目錄接口。 JNDI 的添加允許 Java 應用程序從本地設備上的遠程服務器運行代碼。 程序員通過在應用程序中添加有關遠程服務器的單行詳細信息來進行指導。
問題是不僅程序員能夠將規則添加到應用程序中。 假設 Log4j 記錄登錄嘗試的用戶名。 當有人在用戶名字段中輸入上述行時,Log4j 運行該行,Java 應用程序解釋命令以在指定服務器上運行代碼。 Log4j 記錄 HTTPS 請求的情況也是如此。 如果將瀏覽器名稱更改為該行,Log4j 會運行該行,間接指示它根據需要運行代碼。
緊急補丁也可能不安全
9月4日,該漏洞大規模曝光。 Log2.15j 的開發者 Apache 軟件基金會發布了一個緊急補丁(2.15)來修復該漏洞。 從那時起,處理 XNUMX 版本並為組織提供補丁一直是軟件供應商的首要任務。
然而,安全組織 LunaSec 表示該補丁並非完全無懈可擊。 仍然可以調整設置並執行已記錄的 JNDI 命令。
請注意:相關設置必須手動調整,這樣2.15的未修改變種確實是安全的。 儘管如此,Luna Sec 建議供應商和組織更新到 Log4j 2.16。 2.16 由 Apache Software Foundation 發布以響應 LunaSec。 新版本徹底去除了易受攻擊的設置,無法為濫用創造條件。