最近一段时间小编朋友圈的java程序员都在熬夜应急。2021年11月24日,阿里云安全团队向Apache官方报告了Apache Log4j2远程代码执行漏洞。该漏洞在12月9号开始大规模爆发,十号的时候已经有许多程序员连夜修复漏洞了,那么log4j是个什么东西呢?出现了这个漏洞还能使用吗?请继续阅读该文章了解相关信息。
什么是日志?
我们在学习编程的时候,会打开debug模式进行代码调试,我们可以看到代码中各个变量的状态。但在实际生产中是没有debug模式的,我们只能使用输出这个变量的方式进行判断。小编刚开始不会使用debug模式就是使用这样的方式进行代码状态的判断:即使用print语句把变量输出出来。对于服务器而言,这样的方法不现实(总不能派个人一直去盯着服务器吧),更合理的方式是将输出写入文本,并带上写入时间,这样每天都能生成一个文件,这就是日志。
什么是日志管理工具?
使用最简单(思路简单)的写文件的方法来写日志,会有代码复杂,日志杂乱,日志等级划分不清楚的问题,这时候就引入日志管理工具了,很多语言都有日志管理工具,比如JavaScript的console.log()方法,就是一个写日志的函数(不过它会在控制台输出),java也有一个logging工具用于日志管理。
什么是log4j,为什么要用他?
log4j是一个更优秀的日志管理工具,logging的易用性没有那么好,结合log4j使用会更加舒适。
哪些项目会用到log4j?
日志管理工具在各个地方都可以用得到,从桌面应用程序到web服务器再到安卓app都可以使用。常见的使用log4j的应用如下:大部分springboot的web应用、大部分的ssh,ssm框架都会集成log4j(属于开发者自行集成,并不是自带,但很多开发者都会选择log4j,这也是这次漏洞为什么会那么严重的原因),桌面应用比较出名的像Minecraft也使用了log4j(所以经由Minecraft进行攻击的案例也很多,而且正在飞速上涨)
怎么回避这个bug?
将log4j升级到最新版本。12 月 10 日上午,阿里云安全团队再次发出预警,发现 Apache Log4j 2.15.0-rc1 版本存在漏洞绕过,建议及时更新至 Apache Log4j 2.15.0-rc2 版本。