噩梦|让全世界大厂都手忙脚乱的代码漏洞,是怎么一步步成为噩梦的?( 二 )


这时候,日志的作用就体现出来了,它就好像是一大张草稿纸,能在上面做任何你自己看的懂得步骤和标记,方便随时随地验算。
本质上日志是程序员们经常使用的一个工具,它把代码在测试过程中的每一步都给记录下来,跑完再回头 Debug 的时候,就很有针对性,效率也高。
噩梦|让全世界大厂都手忙脚乱的代码漏洞,是怎么一步步成为噩梦的?
文章插图
而 Log4J2 ,就是这么一个开源的日志框架,它里面整合了不少在修改代码时会用到的常用功能,比如日志管理、输出变量等实用功能。
噩梦|让全世界大厂都手忙脚乱的代码漏洞,是怎么一步步成为噩梦的?
文章插图
这次的高危漏洞就是源于 Log4J2 中一个叫 Lookups 的功能。
从字面上理解,这个功能就是一个用来搜索内容的接口,想要搜些啥,那就要靠代码去实现了。
噩梦|让全世界大厂都手忙脚乱的代码漏洞,是怎么一步步成为噩梦的?
文章插图
Log4J2 也在 Lookups 的功能下,提供了不少实现的途径,问题就出在这个叫 JNDI 的途径上。
噩梦|让全世界大厂都手忙脚乱的代码漏洞,是怎么一步步成为噩梦的?
文章插图
JNDI 被 Java 允许通过远程连接的方式来加载文件,这个远程地址可以是开发者自己的服务器,也可以是外界的服务器。
噩梦|让全世界大厂都手忙脚乱的代码漏洞,是怎么一步步成为噩梦的?
文章插图
坏就坏在这个远程下载上了。。。
黑客只要通过 JNDI 的方法连接上自己的恶意服务器,就可以堂而皇之从这个接口进来,继而攻破整栋固若金汤的大厦。
噩梦|让全世界大厂都手忙脚乱的代码漏洞,是怎么一步步成为噩梦的?
文章插图
这里世超用尽可能简单的说法解释了一下这个漏洞,如果差友们对具体的实现方式有兴趣,可以看下知乎上轩辕之风大佬的文章,介绍的很详尽了。
那么问题来了,为什么这个漏洞在被发现之后过了这么久,才被重视起来?
外行看热闹,内行看门道,有些事儿还真得问问业内人士。
于是世超咨询了国内知名的白帽网站——火线安全平台的小火子同学,聊了一通之后,大致了解了专业人士对这件事儿的看法。
噩梦|让全世界大厂都手忙脚乱的代码漏洞,是怎么一步步成为噩梦的?
文章插图
实际上 Log4J2 漏洞产生的原因,是因为部分程序员想要开发者保留在 Lookups 中 JNDI 的实现方式的旧功能而引起的。
根据 Log4J2 的维护者 Volkan Yaz?c? 的说法,他们早就想把这个有风险的功能给去了,但为了保证向后的兼容性,照顾到想要用这个功能的程序员,所以还是保留了下来。
噩梦|让全世界大厂都手忙脚乱的代码漏洞,是怎么一步步成为噩梦的?
文章插图
好嘛,小洞不补、大洞吃苦,这个高危漏洞被发现之后, Log4J2 实际的管理机构 Apache 软件基金会并没能引起足够的重视,披露漏洞的流程也没有按流程来走。
噩梦|让全世界大厂都手忙脚乱的代码漏洞,是怎么一步步成为噩梦的?
文章插图
他们直接把问题往开源平台 Github 的 issue 里一贴,期待能有好心人给出解决问题得方案。
但这是个开放平台啊,有程序员同样也有黑客。。。
这波操作等于告诉了全世界的黑客: “ 咱这软件有高危漏洞哈,欢迎来捅! ”
噩梦|让全世界大厂都手忙脚乱的代码漏洞,是怎么一步步成为噩梦的?
文章插图
甚至在漏洞全面爆发之前,就已经有白客们在 issue 中公开讨论过具体的修复细节。
噩梦|让全世界大厂都手忙脚乱的代码漏洞,是怎么一步步成为噩梦的?
文章插图
可惜的是,等到所有用到使用 Log4J2 的业务系统反应过来有这个漏洞,已经过去了很长一段时间了。
因为使用 Log4J2 组件的软件实在太多,所以互联网公司的安全部门要一个个软件做修复和升级,这里头的工作量也可想而知。