Apache Log4j 漏洞影響有多大?
出品 | OSC開源社區(qū)(ID:oschina2013)
來自 Google Open Source Insights Team 的安全研究人員通過調(diào)查 Maven Central 中所有軟件包的所有版本,以更好地了解最近曝出的 Log4j 漏洞對整個 JVM 語言生態(tài)系統(tǒng)的影響,同時還跟蹤了正在進行的緩解受影響軟件包的工作。
就生態(tài)系統(tǒng)影響而言,8% 是相當巨大的數(shù)字。因為對 Maven Central 生態(tài)的平均影響數(shù)值為 2%,中位數(shù)則低于 0.1%。

如記錄漏洞的 CVE 所述,大多數(shù)受影響的軟件包來自間接依賴項(即自身依賴項的依賴項),也就是說它們沒有將 log4j 明確定義為依賴項,而是作為傳遞依賴項被引入進來。

這正是 JVM 生態(tài)整體上修復此漏洞異常困難的原因。安全研究人員稱,在撰寫文章時,只修復了近五千個受影響的軟件包,還有 30000 多個軟件包會受到漏洞的影響。

簡單來說就是,漏洞在依賴關系鏈中嵌套得越深,修復漏洞所需的步驟就越多。下圖顯示了受影響的 log4j 包(核心或 api)首次出現(xiàn)在依賴圖中的深度的直方圖。

修復漏洞的另一個困難之處由解析算法 (resolution algorithm) 和需求規(guī)范約定中生態(tài)系統(tǒng)層級的選擇引起。
在 Java 生態(tài)中,開發(fā)者通常的做法是指定軟件版本方面的“軟”要求——假設沒有其它版本的相同包出現(xiàn)在依賴關系圖中,解析算法會使用指定的明確版本。
對于此類修復,通常需要維護者采取更加明確的行動,以將依賴需求更新為修補后的版本。
這種做法與其它生態(tài)形成了鮮明的對比,例如在 npm 軟件包中,開發(fā)者通常會為依賴項指定開放范圍。開放范圍允許解析算法選擇滿足依賴性要求的最近發(fā)布的版本,從而引入新的修復。
最后,對于整個生態(tài)需要耗費多少時間來完成漏洞修復,目前也很難評估。在查看了所有公開披露的受影響 Maven 軟件包中,安全人員發(fā)現(xiàn)只有不到一半(48%)得到了修復。
參考原文:https://security.googleblog.com/2021/12/understanding-impact-of-apache-log4j.html
