三十年的老软件正在被一口气清理掉。说真的,这是件好事。

三十年的老软件正在被一下子清理。说真的,这是个好消息。


有两个你从来没安装过,也大概永远都不会见到的程序。可是,你每天会用它们数百次。它们叫作 OpenSSL 和 curl。

第一个,就是你浏览器里的那把小锁。是它把你的手机和银行之间的对话加密,这样中间没人能读到传输的内容。第二个,会在设备需要时从互联网获取页面或文件。它藏在你的网络盒子、电视、打印机和汽车 GPS 里。

这两个程序都有二十五多年历史。这两个程序都由少数几个人维护。而从一月开始,人们前所未有地重新审查它们。

一台老旧的工业机器,一半布满灰尘,一半已经修复,在车间里接受小型机器人的检查

老旧机械,全面检修。有点吱吱作响,但出来时状态更好了。

所有人都在用,却没人知道的程序

我们常常以为,现代设备是一整块由某个品牌完全制造出来的东西。实际上,它是许多写在别处的小软件层层堆起来的产物,这些软件往往是免费的,有时还已经存在了很久。大家都直接重复使用它们,因为它们运行得很好。

一栋房子的剖面图,七台设备里都装着同一个通过虚线连接的小齿轮

家里的七件物品,里面都有同一小段代码,却没人知道它的名字。

这些东西可没那么容易替换。它们在 1998 年就装上了,一直在发挥作用,于是我们就去忙别的了。二十五年后,它们仍在数十亿台设备里运行。可是,没人有时间重新打开外壳,检查每一行代码。这不是疏忽。这是人的时间问题。认真重新阅读一个完整的程序,可能会占用一名工程师好几个星期。所以我们没有这么做。

为什么这些漏洞二十五年来都没人发现

当时已经有一种自动寻找缺陷的方法,而且它帮了很大的忙。原理相当蛮干:我们向程序发送数百万条荒谬的数据,直到它崩溃为止。崩溃一眼就能看出来。于是机器可以报告:「这里有问题。」

问题是,大多数缺陷不会让程序崩溃。它们更糟。程序继续安安静静地运行,准确执行要求它做的事,却不检查提出要求的人有没有权利这么做。

左边是一扇被攻城锤撞破并触发警报的门,右边是同一扇门由门卫礼貌地打开,小偷趁机通过

门被撞破,声音很大。有人礼貌地替你开门,声音小得多。

要找到这些缺陷,光晃动程序还不够。得读它的代码,理解它本来应该做什么,然后找出两者之间的偏差。换句话说,这需要一个有能力、昂贵而且缓慢的人来做。这堵墙倒下了。现在,工具可以自动完成很大一部分代码阅读工作。

然后突然之间,我们什么都找到了

1 月 27 日,OpenSSL 一口气公布了十二个此前未知的漏洞。它们全都由一家专业公司的系统在一次活动中发现。有些漏洞已经在代码里沉睡了二十五到二十七年,尽管 OpenSSL 是这个星球上被重新审查最多的程序之一。二十七年。这个漏洞的年纪比它一半的用户还大。

这不只是碰巧走运。八月初,Palo Alto Networks 的一个团队公布了两个月自动分析的结果:检查了 3,915 个程序,找到了 14,090 个缺陷。超过九成属于那种看不见的类别,也就是永远不会让程序崩溃的缺陷。大约三分之一很严重。

一条工业传送带将数千份报告倾倒在一张小办公桌上,一个人被埋在下面

两个月发现一万四千个缺陷。每一个都意味着你使用的软件里少了一个漏洞。

这是一场普遍的变化。Mozilla 白纸黑字地写道,自二月以来,Firefox 团队一直不停地使用这些工具来寻找并修复旧缺陷。在 Chrome,已经修复并公布的漏洞数量从年初开始增加了六倍多。在 GitHub,这个数字增加了五倍多。

显示自2026年1月以来各软件厂商修复并公布的漏洞数量增长情况的柱状图

并不是突然有人在一月份把代码写得更糟了。我们只是开始查看而已。

就在本周,8月14日,一家软件厂商宣布,他们在269个程序中找到了超过2 400个缺陷。其中一个藏在四十年前写下的代码里。这些数字是软件厂商自己公布的,没有人核实过,所以要谨慎。但这个趋势已经不再有什么真正的争议了。

这对你意味着什么

这就是为什么我觉得这件事真的令人振奋。到处都把它说成一场灾难,而我相信事实恰恰相反。

这些缺陷并不是刚刚出现的。它们昨天就在,十年前也在,藏在你的网络盒子里,也藏在你的浏览器里。唯一保护你的东西,就是没人有时间去寻找它们。这不叫安全,这叫运气。现在,我们把它们找出来了。一旦被发现,它们就能被彻底修复。

其实,这方面还有一个先例,而且它经受住了时间的考验。2002年,微软暂停了 Windows 的开发大约十周,让自己的团队重新审查全部代码。当时,所有人都觉得这个行动疯狂、昂贵而且丢脸。然而,这项工程把一个每周感染一次病毒的系统,变成了一个还算能用的东西。可它毕竟需要一家巨型企业、数月的工作,以及一个单独的产品。这一次,同样的事情同时发生在数千个程序上,代价只是一张电费账单。

具体来说,明天的软件会比昨天的软件更干净。不是完美,没有人向你承诺过完美。但你的网络盒子、你的浏览器、你的手机,以及那个控制你暖气的小盒子,现在使用的全都是通过第一次技术检查的代码片段。两年后,同一个代码库会比今天牢靠得多。而你什么都不用做。

还剩一个非常简单的条件:你的设备还得继续接收更新。一个从来没有安装的修复程序毫无用处。所以真正的输家,是那台品牌已经消失的2019年打印机,以及那台三年来什么都没收到的39欧元摄像头。其他一切设备,保持自动更新开启,让它自己运行就好。

反面,因为反面确实存在

发现一个缺陷几乎已经不花钱了。修复它,不是。而这件事,完全没有增加。

负责 curl 的那个人叫 Daniel Stenberg。他现在收到的报告多到吓人,所以今年夏天做了一个激进的决定。很多报告都是机器写出的漂亮故事,却根本没有真正的漏洞。因此,从7月1日到8月3日,他把邮箱关了。无论是表单还是电子邮件,都不再接受任何报告。什么都没有。

一个塞满邮件的邮箱,挂着一块写着8月3日退回的牌子,一个男人平静地躺在躺椅上

今年最好的 IT 决定,就写在一小块纸板上。

8月3日公布的结果很简单:整整一个月只收到一条消息,而且没有发生任何事故。Daniel Stenberg 说,暂停开始几天后,整个团队都感到如释重负。像是在度假,胸口少了一块压着的石头。要知道,这段代码运行在这个星球上几乎所有拥有网络接口的东西里,这足以让人思考。

这才是未来几年真正的大活。找出漏洞,几乎已经解决了。现在得帮那几个修复漏洞的人,别让他们淹没在里面。

我的看法

二十五年来,借口始终都是同一个:没人有时间重新审查这段代码。这是真的,所有人也都对此习以为常,我更是第一个。

这个借口已经死了。我觉得这棒极了。我们正在进入这样一个时期,老软件可以随着变老而变得更好,而不是悄悄地在自己的角落里腐烂。一个1998年的程序接受全面检修,然后以干净、扎实、摆脱了原始缺陷的面貌重新出现。这正是我们在计算机领域从未有过的那种好消息。

所以没错,这里面有噪音,有瞎编的报告,还有筋疲力尽的维护者。这是这个时期要付出的代价,事情会解决的。但五年后,你家里运行的东西会比今天运行的东西扎实得多。我已经很久没写过这样一句话了。

Join the conversation

You need an account to comment on this article. Creating one is free and takes under a minute.

  • The XMLTV file, free to download every day
  • Comment on articles and reply to other readers
  • Get an e-mail when an article you follow is updated

No comments yet.

Une erreur s'est produite. Cette application peut ne plus répondre jusqu'à ce qu'elle soit rechargée.Veuillez contacter l'auteur. Reload 🗙