开源软件,因其透明性(每个人都可以审查源代码)和社区驱动的特性,一直被广大用户和开发者视为安全的象征。这种信念源于人们对开源社区的信任,即认为社区的众多同行评审能够发现并修复潜在的安全漏洞。然而,不久前发生的“XZ Utils”后门事件对这种信念造成了不小的冲击,而攻击者ID暗含的“中文属性”也给整件事的阴谋论增添了一些想象的空间。
事件背景
Linux操作系统可以说是整个互联网的基石,它被广泛应用在各种核心的互联网服务中,比如你每天用的App后台基本上都是Linux服务器。XZ Utils作为一个基础的开源软件,因其高效的压缩算法而被广泛应用在各种Linux服务器中。然而,最近该软件被发现存在一个严重后门,攻击者可以利用这一点绕过服务器的安全验证,实现远程代码执行。这一发现引起了广大用户和开发者的恐慌,有吸引眼球嫌疑的文章把它描述为“核弹级”隐患。这件事也引起了美国网络安全防御部门的高度关注,并发布了专门的警告。事件细节
据调查显示,这一后门是被故意植入的(哈哈,后门都是故意植入的),植入者网络上的ID为JiaT75(Jia Tan)。他采用了极其隐蔽的手段,通过添加特定的二进制测试文件,在软件编译过程读取测试文件时,测试文件的数据会修改软件代码,从而绕过了源代码审查。一个需要提及的事实是,开源软件的维护者通常是没有报酬的志愿者,他们很多都是出于兴趣或者荣誉感而贡献自己的时间和精力。XZ Utils的原维护者叫Lasse Collin,自2009年以来一直在义务维护该项目,但由于个人精力有限,在回答用户邮件时就曾表达过希望有人接手项目的意愿,JiaT75正是利用了这一机会。JiaT75从2021年起开始为XZ Utils项目贡献源代码,他通过一点一滴的贡献取得了Lasse Collin的信任,逐渐成为了项目的实际维护者,并取得了直接合并代码的权限(不用经过其他人审查)。这一次后门事件被发现相对偶然,是另一位开发者在使用XZ Utils时注意到CPU占用异常,进而深入调查,从而揭露并通报了这一安全隐患,不懂技术的朋友请直接跳过。目前,本着“厨房里不会只有一只蟑螂”的原则,所有由JiaT75贡献过代码的项目都在进行自查,以排除潜在的安全风险。JiaT75是谁
这个问题很可能永远不会有答案,我们甚至不知道他是一个人还是一个机构。但只要在网络上活动,总会留下痕迹,尤其是活动了这么长时间。从JiaT75与其他人沟通时留下的IP地址,比较容易定位到新加坡,但毫无意外,这是一个VPN地址,真实的地址被隐藏了。在Linkedin上也能找到JiaT75这个ID,不过很大的概率是冒用了别人的ID,看过《非常嫌疑犯》的朋友应该不难理解这种思路,凭空编一个还不如把随意看到的拿过来直接用。这里顺带一提,很多女生在小红书之类的生活美好平台发了很多日常岁月静好的相片和视频,有的也会被别有用心的抠脚大汉搬到推特上去构建一个虚拟的人物形象,这边更新那边也更新,然后再用这个形象去收割推特上单纯的、饥渴的。。还有另外一个思路是通过提交代码的时区和时段进行分析,显示是UTC+0800,也就是天朝所在的时区,进一步深挖,在早期的git纪录中出现了这样的名字:老实讲,这样的证据还太单薄了,退一步说,一个人的行为也不能说明什么。学到了什么
1. 软件的复杂度越来越高,依赖的链条越来越长,系统的安全性就是木桶原理,整体的安全取决于最短的那块板,问题往往都出在比较边缘的项目。2. 非常多的商业项目都使用到了开源项目,但是对开源项目的回馈太少,索取太多。经常看到一些免费使用开源项目的用户老是"质问"维护者为何没有这个那个功能。
3.厨房里的蟑螂不会只有一只。考虑到我们在构建服务时使用了如此之多的其他软件,挺难相信,只此一例。
我在网上冲浪的心态基本上是这样子:我基本上是在裸奔的,之所以没有发生什么,只是因为我:不重要。
鸣谢
本文的写作得到人工智能助手Kimi的支持,我先是帮它列出了事实性的要点,然后让它扩展写出一篇底稿,然后我在这个底稿的基础上对它进行润色处理。从总体上看,我感觉它还是不太适合用来写文章,主要是文字看起来太面面俱到,显得有点平庸,总体上跟我自己写没有什么分别,但是如果是用它处理新闻类的文章,估计就比较合适。