走火的科学神童 罗伯特释放病毒的当晚,波斯蒂克只睡了3小时。清晨6点他赶到办公室时,电话铃已 经响个不停。打电话的是来自各地的愤怒的电脑管理员,要求知道怎样对付病毒。他们对伯 克利分校怨气冲天。伯克利Unix的最大客户之一美国国防部更是怒不可遏。你们知道伯克 利Unix有漏洞吗?谁释放了这种阴险的病毒?他会不会在病毒中安放了特洛伊木马?伯克 利是否计划将病毒代码层层分解?问题连珠炮般提出来。 前一天波斯蒂克已发出“病毒报告第一号”,要用户修改sendmail程序。8点的时 候,他发出“病毒报告第二号”,对如何修改进一步作了说明。他和同事们准备分解病毒, 这是一项艰巨的任务,但不这样做,就无法搞清病毒是否有害。 与此同时,麻省理工学院的程序员也在昼夜奋战。3日中午,伯克利接到麻省理工学院 的通报,指出病毒进攻的第二个渠道是finger程序。病毒向finger传输超量数据使其瘫 痪,一旦它占据了内存空间,就会启动一个小程序,从网络的其他地方把病毒的母体带入目 标计算机。 波斯蒂克起初不信——finger只是一个50行的小程序,这么个小东西会隐藏重大错误 吗?但麻省理工学院送来一个finge,中漏洞的展示样本,波斯蒂克不得不服。他很快发出 “病毒报告第三号”,指示用户修改finger程序。 由此,波斯蒂克认定:唯一发现病毒隐藏危险的办法就是对其逐行分解。 分解程序,意味着把它由1和0组成的序列(电脑把这些1或0理解为“开”或“关” 的指令)还原为程序员能够编写和理解的东西。这就好像拿到一本由英文原版翻译过来的中 文书,再在没有原版书参考的情况下,把它翻回英文。新的英文书不可能与原版完全一样, 但好的译者能做到意思大致不差。在一个程序分解后,它使用的语言也许会有所不同,但其 表现方式与原程序将是相似的。 在通常情况下,人们编写而不分解程序。也就是说,一旦程序由源代码翻译成机器可执 行的代码,就没有理由去逆转这个过程。一个程序的源代码是无价之宝,因为它是了解程序 作者意图的窗口。如果某一程序的作者有意隐藏源代码以避免他人看穿他的用心,那么唯一 的办法就是分解程序。只有很少的程序员有过这种经验。 伯克利却能够胜任这样的工作。它不仅是伯克利Unix 的发源地,而且还是世界各地 Unix专家一年一度聚会的场所。事发之际恰逢unix年会召开,所以波斯蒂克很快找到了一 些分解程序的好手,建立了一个工作小组,其中之一来自硅谷,名叫戴夫·巴尔(Dave Bare)。就这样,美国东西两岸的程序员同时在于着分解程序的工作。麻省理工学院与怕克 利分校表面上合作,暗地里却较着劲儿。它们都想抢先完成。伯克利小组时时接到国防部打 来的询问进展情况的电话。 紧张的气氛源于人们不知道病毒程序是否内藏有害的指令。一次,巴尔看到有些代码似 乎带有定时器。 “嘿,伙计们,”巴尔叫道,“每过12小时它就活动一次!” “什么?”所有的人都绷紧了弦。 “它启动一个叫做‘清除H’的任务。” “清除H?”这意味着清除主机吗(H=Host)?它是不是想把它所运行的主机上的所 有文档都销毁? 波斯蒂克赶忙冲到巴尔身旁。任何定时的东西都不是什么好兆头。预定时间一到,谁都 不清楚会发生什么事。巴尔立即对它进行了分解,结果证明是一场虚惊。病毒每隔12小时 就产生一个受感染主机的清单,“清除H”是用来消除这个清单的。 伯克利小组很快发现了病毒程序中的一些错误。最使巴尔不解的是,程序的质量很不稳 定。有些部分美妙绝伦,另一些部分则败笔迭出,似乎根本就不是同一个人写的。 在坎布里奇,麻省理工学院发现了程序的一个重大缺陷:新到来的病毒与已经在机器中 立足的病毒难以对话,因为后者并没有足够的耐心听前者说话,从而承认它的到来。因而, 每个病毒都认为自己是唯一的,罗伯特设计的用以促使病毒拷贝自我毁灭的“电子硬币”投 掷,根本就不会发生。这是该病毒的致命伤。由于这个缺陷,不要说作者把复制参数误设为 1/7,就是设定为1/1 0,也是无济干事。 3日下午4点,病毒的结构重组完毕,结论很明显:它是无害的。第二天早晨,波斯蒂 克发出了第四份也是最后一份病毒报告。这份报告是伯克利小组开的一个玩笑,它是病毒自 身缺陷的勘误表!它似乎在嘲笑病毒的作者:你可真有两下子,但离伟大还差得远呢。这以 后,波斯蒂克把分解后的程序送了一个拷贝给国防部,然后回家睡觉去了。他两天不曾合过 一次眼。 但有一个问题立刻引起争论:应不应该把分解后的程序在网络上公布。波斯蒂克坚决反 对公布,他可不想让中学生抄下这一程序再试着运行。其他人则认为这种态度有点“老子天 下第一”,但波斯蒂克坚持说,在网上散发源代码就好像给人随便发枪。国防部对波斯蒂克 的态度倒是很赞赏。 3日早晨,罗伯特没有去机房,他留在宿舍里试图做功课。晚上,他去合唱团练唱,顺 道去了阿普森大楼检查自己的电子邮件。他发现大部分机器都恢复了正常,信箱里有学校的 通知,说互联网上发现了病毒,但康奈尔已控制住了局面。还有伯克利发出的关于修补漏洞 的指示。最后是保罗的来信,叫罗伯特打电话给他。 晚上11点,罗伯特打去电话,保罗告诉他媒介对此事的巨大反响。罗伯特没有电视, 当他听说三大电视网都把病毒事件作为头条报道时,感到十分震惊。 这天晚上,鲍勃和安妮在外用餐,席间谈起渗透互联网的病毒,斯多在早晨的电话里告 诉了鲍勃这个消息,但鲍勃一直在忙其他事,没有细想过病毒的来源。 11点30分,鲍勃已在家熟睡,罗伯特打电话来。他坚持让安妮叫醒父亲,说有事要 说。父子俩进行了一场简短的交谈。听说儿子做出这等事,鲍勃很不安,但没有发火。罗伯 特告诉父亲他已买好了第二天去费城的机票,鲍勃叫他不要对任何人暴露他的行踪。他需要 律师的建议。 5日,《纽约时报》头版头条以大字标题刊出《电脑病毒作者是国家安全局数据安全专 家之子》。报纸没能拿到罗伯特的照片,但第二天,父亲和儿子的照片同时出现。鲍勃的大 胡子遮住了半边脸,看起来就像一个科学狂人。 尽管总统大选在即,媒介还是对病毒事件穷迫不舍。计算机安全专家的儿子破坏了互联 网,这个故事简直大绝妙了。到6日早晨,电视和报刊记者已经挤满了莫里斯家的车“道, 他们在那里盘踞了两个星期。电话洪水般打进来。鲍勃没有失去他的幽默感。当一个朋友打 电话来,劈头就说“我不是记者”时,鲍勃回答:“那么你一定是拨错电话了。” 媒介报道起初集中在病毒对军方电脑的破坏上面,随着作案者身份的暴露,很快就转移 到莫里斯杰出的一家和科学神童的恶作剧怎样走火、酿成大祸的话题上。《芝加哥论坛报》 的专栏作家要求判处罗伯特重刑。记者们四处寻找计算机安全专家评论此事。DEC总裁 肯·奥尔森(Ken Olsen)在接受采访时说,尽管DEC电脑常常是黑客袭击的目标,电脑界 也不能因此限制网络的自由使用。“这件事引发的最坏结果,”奥尔森说,“就是我们阻止 学术信息的自由活动,而那是应该不惜任何代价保留的。” 当罗伯特的名字见诸报端时,认识他的人都不觉得惊讶。有一个故事说,当病毒叩击贝 尔实验室大门时,那里的unix专家都笑着说:“一定是莫里斯的小家伙干的。”哈佛的教 授们则叹息说:“为什么他不先在小范围内模拟试验呢?” 安迪、保罗和大卫则坐在艾肯的办公室里商量怎样保护他们的朋友。他们想设法让媒介 多从正面着手来报道这件事。正在他们商量的时候,罗伯特来了电话,他没告诉他们自己现 在何处。 “你在干什么呢?” “烘饼干送给朋友,”罗伯特回答。