Log4j,一个注定会载入网络安全史册上的漏洞。
不管是什么编程语言,往往都离不开日志记录。日志记录主要用来监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依据。简单来说,日志可以帮助人们了解程序的运行情况,排查程序运行中出现的问题。
在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语言开发的。
当然,究其原因,还在于虽然一些数百万乃至数十亿体量的公司依赖它获利,但它却只是一个志愿者建立的,并且很大程度上是免费运行的项目。如果进展顺利,开源就是合作的胜利;而一旦出了问题,就会产生深远的危险。这次的危机就暴露了整个互联网行业的供应链安全问题。
当前,互联网的安全已经是一个不得不重视的问题,随着数字时代的降临,数字世界几乎能复刻出完全仿真的现实世界。在这样的背景下,安全问题牵一发而动全身,关乎到社会的稳定、国家的发展,甚至更多。只有保障数字社会的安全,数字世界的发展才能行稳致远。