不管是什么編程語言,往往都離不開日志記錄。日志記錄主要用來監視代碼中變量的變化情況,周期性的記錄到文件中供其他應用進行統計分析工作;跟蹤代碼運行時軌跡,作為日后審計的依據。簡單來說,日志可以幫助人們了解程序的運行情況,排查程序運行中出現的問題。
在Java技術棧中,用的比較多的日志輸出框架主要就是log4j2和logback。因為Log4j開源的性質,Log4j遍布整個軟件行業,被廣泛用于記錄用戶名、密碼和信用卡交易等細節。
然而,2021年11月24日,Apache Log4j2卻被曝出存在嚴重高危的遠程代碼執行漏洞,大體來說,這個漏洞允許攻擊者在未經身份驗證的情況下,通過遠程代碼訪問服務器。他們可以發送指令、執行指令,并且可能完全不被發現。消息一經發布,整個軟件行業都為之震動。
很快,阿里云、斗象科技、綠盟科技、默安科技、奇安信等眾多安全廠商均對此發布危害通報。事實上,自發現該漏洞以來,網絡安全工程師就在爭分奪秒地保護應用程序、服務、基礎設施和物聯網設備。
然而,部分Minecraft用戶還是受到了勒索軟件攻擊,微軟則檢測到了下載和運行“挖礦”軟件、竊取身份信息等行為,比利時國防部甚至因受到攻擊而關閉了部分計算機網絡。
在Log4j維護者團隊幾乎無償的緊急工作下,Apache于2021年12月6日針對Log4j漏洞進行了修復,但沒能完全解決問題,又在12月13日、17日和27日分別針對新發現的問題發布了新版本。
這一次漏洞的影響面之所以如此之大,主要還是log4j的使用面實在是太廣了。一方面,現在Java技術棧在Web、后端開發、大數據等領域應用非常廣泛,除了阿里巴巴、京東、美團等一大片以Java為主要技術棧的公司外,還有多如牛毛的中小企業選擇Java。另一方面,諸好多像kafka、elasticsearch、flink這樣的大量中間件也是用Java語言開發的。
當然,究其原因,還在于雖然一些數百萬乃至數十億體量的公司依賴它獲利,但它卻只是一個志愿者建立的,并且很大程度上是免費運行的項目。如果進展順利,開源就是合作的勝利;而一旦出了問題,就會產生深遠的危險。這次的危機就暴露了整個互聯網行業的供應鏈安全問題。
當前,互聯網的安全已經是一個不得不重視的問題,隨著數字時代的降臨,數字世界幾乎能復刻出完全仿真的現實世界。在這樣的背景下,安全問題牽一發而動全身,關乎到社會的穩定、國家的發展,甚至更多。只有保障數字社會的安全,數字世界的發展才能行穩致遠。