这几天爆出了一个开源项目xz 的漏洞,在安全研究员分析了漏洞原因以及这个漏洞产生的整个过程,不得不感叹,这黑客的心思缜密,真就像电视剧里的卧底一样,步步为营,从普通贡献者到核心开发者,有直接commit权限,用两年半的时间悄悄加一个后门进去。我们之前听说过的漏洞是怎么出现的呢?基本上有两种形式。
第一种,软件或者操作系统本身的代码不严谨,在某些特殊情况下会产生问题,黑客通过研究操作系统或软件本身的代码,或者使用某些手段,构造特定的攻击流程和数据,从而完成漏洞的利用。比如每年都会举办针对各种电脑、手机的安全大赛,能够使用某些手段破解系统的高手,可以获得丰厚的奖励。
第二种,就是黑客将病毒挂当网页,或者植入到某些应用中,例如你访问了某些不太友好的网站,或者在某些不知名平台下载了软件,就可能带有病毒。这些病毒会为电脑打开后门,制造者只需要用事先设计好的方式就可以干坏事儿了。
而这次的方式不同,作者以一个程序员的身份参与到 xz 这款开源的压缩工具,并且用将近 3 年的时间混到了主要贡献者,甚至是主要负责人。然后一步步的、非常巧妙的将后门植入进去。
xz 是一个压缩工具,并且被远程登录工具 sshd 使用,MacOS 和 Linux 都装有 sshd,所以,也就是都要用到 xz,可想而知,如果 xz 被植入后门,那影响可不是一般的大,而是非常之大。被植入后门的是 xz 5.6.0 和 5.6.1 这两个版本,因为是刚合并不久就被发现了,所以目前影响很小,如果你用的是 MacOS ,检查一下吧,如果不幸就是这两个版本中的一个,那降下来就好了。
这位黑客到被揭穿的前夕,已经从普通贡献者混到了主要贡献者,并且有了直接提交代码的权限,可想而知,实力是非同一般的。并且 xz 项目的负责人有定期「断网」的习惯,就是隔一段时间就去享受人生,不关注网络,所以据说到现在还没联系上。这也给了这位黑客一个好机会,因为不会有人 review 代码了。
这位兄弟机关算尽,但终究是百密一疏。他注入的代码有一点点 Bug,导致特定情况下 sshd 的 CPU 占用飙升。另一个开源贡献者PostgreSQL的开发者发现了 CPU 飙升并查找原因,在进行性能分析的时候发现有一个 500毫秒的延时 ,这样顺藤摸瓜才将这个后门揪出来。xz 项目的其他人以及所有下游厂商安全研究都没有及时发现,如果不是这个巧合,那不知道这个后门会进入到多少台电脑、服务器,没准以后我们用的MacOS开发机都会中招。
基本的原理就是在编译的时候,把测试数据里的一些东西扒出来当成 shell 命令执行了,执行的命令可以往编译产物里再注入其他东西。这段代码被合并到公版后,黑客就可以在下一版中就可以往沙盒代码库里加入“不经过安检”的任何代码了。