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