最近一段時間小編朋友圈的java程序員都在熬夜應急。2021年11月24日,阿里云安全團隊向Apache官方報告了Apache Log4j2遠程代碼執(zhí)行漏洞。該漏洞在12月9號開始大規(guī)模爆發(fā),十號的時候已經有許多程序員連夜修復漏洞了,那么log4j是個什么東西呢?出現(xiàn)了這個漏洞還能使用嗎?請繼續(xù)閱讀該文章了解相關信息。
什么是日志?
我們在學習編程的時候,會打開debug模式進行代碼調試,我們可以看到代碼中各個變量的狀態(tài)。但在實際生產中是沒有debug模式的,我們只能使用輸出這個變量的方式進行判斷。小編剛開始不會使用debug模式就是使用這樣的方式進行代碼狀態(tài)的判斷:即使用print語句把變量輸出出來。對于服務器而言,這樣的方法不現(xiàn)實(總不能派個人一直去盯著服務器吧),更合理的方式是將輸出寫入文本,并帶上寫入時間,這樣每天都能生成一個文件,這就是日志。
什么是日志管理工具?
使用最簡單(思路簡單)的寫文件的方法來寫日志,會有代碼復雜,日志雜亂,日志等級劃分不清楚的問題,這時候就引入日志管理工具了,很多語言都有日志管理工具,比如JavaScript的console.log()方法,就是一個寫日志的函數(shù)(不過它會在控制臺輸出),java也有一個logging工具用于日志管理。
什么是log4j,為什么要用他?
log4j是一個更優(yōu)秀的日志管理工具,logging的易用性沒有那么好,結合log4j使用會更加舒適。
哪些項目會用到log4j?
日志管理工具在各個地方都可以用得到,從桌面應用程序到web服務器再到安卓app都可以使用。常見的使用log4j的應用如下:大部分springboot的web應用、大部分的ssh,ssm框架都會集成log4j(屬于開發(fā)者自行集成,并不是自帶,但很多開發(fā)者都會選擇log4j,這也是這次漏洞為什么會那么嚴重的原因),桌面應用比較出名的像Minecraft也使用了log4j(所以經由Minecraft進行攻擊的案例也很多,而且正在飛速上漲)
怎么回避這個bug?
將log4j升級到最新版本。12 月 10 日上午,阿里云安全團隊再次發(fā)出預警,發(fā)現(xiàn) Apache Log4j 2.15.0-rc1 版本存在漏洞繞過,建議及時更新至 Apache Log4j 2.15.0-rc2 版本。