38年前的今天,他想数清互联网有多大,结果6000台电脑瘫了
1988年11月2日晚上,康奈尔大学23岁的研究生罗伯特·塔潘·莫里斯,从麻省理工学院的一台电脑上放出了一个会自己爬的小程序。他不是想搞破坏,只是想知道当时的互联网到底连了多少台机器。知乎微博知乎
他的方案很干净:让程序在机器之间自己传播,每落在一台机器上就向控制端报一次到,数一数回报,就是互联网的规模。知乎
程序失控了。复制机制出了 bug,蠕虫疯狂自我繁殖,一夜之间感染了当时约10%的联网计算机。FBI 后来统计:大约24小时内,当时联网的约6万台计算机中有6000台受到影响。知乎微博知乎

它为什么会失控
蠕虫不是从正门进去的。它用了三类入口:sendmail 的调试模式允许远程执行命令,fingerd 存在缓冲区溢出,以及用内置的口令字典猜密码。知乎
其中 fingerd 那条最经典:攻击者发送超过512字节的精心构造数据,覆盖栈上的返回地址,让程序跳去执行攻击者准备的代码。知乎
单看每条都不致命,真正的问题是莫里斯给蠕虫加了一道保险。
蠕虫进机器前会先问一句“这台机器感染了吗”,得到“是”就离开。可这样清除太容易:装一个程序永远回答“是”,蠕虫就进不来。为了不被这样挡住,他让蠕虫在听到“是”的时候,仍有1/7的概率继续复制。知乎
1/7看着克制,但它是每台已感染机器每时每刻都在掷的骰子。重复感染不断叠加,内存被吃光,机器慢到无法使用。
等莫里斯意识到失控,已经压不住了。普渡和伯克利的研究人员花了72个小时才把它清干净。知乎
莫里斯没坐牢,还进了YC
莫里斯是第一个依据《计算机欺诈与滥用法》被定罪的人。1990年判下来:3年缓刑、400小时社区服务、1万美元罚金。知乎知乎
1995年,他和保罗·格雷厄姆做的 Viaweb 在1998年以4900万美元卖给雅虎,成了后来的 Yahoo! Store。哔哩哔哩
2005年,他和格雷厄姆一起创建了 Y Combinator。知乎哔哩哔哩

他自己复盘过:本应该先在模拟环境中试一下的。知乎
今天的网络安全,不少是它逼出来的
那晚之后,行业明白了一件事:互联网“大家都是好人”的默认假设不成立了。世界上第一个计算机应急响应组(CERT)因此成立。知乎知乎
后来所有安全机制的起点几乎都能回溯到这一晚:gets() 从此被当成危险接口,栈保护和地址随机化,都是在给“不信任输入”补课。知乎
38年过去,故事还有新的一章。2024年3月,一个叫 Morris II 的研究展示了针对生成式AI应用的零点击蠕虫,载体是邮件和 RAG 检索到的内容。名字是研究者对1988年的致敬,攻击面却完全不同——这次它爬的不是机器,是模型。知乎
1988年那晚数出来的,是互联网的规模;38年后回头看,那个1/7真正量出来的是复杂系统的脆弱:一个不坏的初衷,加上一个没测试过的假设,就够让6000台电脑瘫痪。