本篇文章1673字,读完约4分钟
历史上最好的编程笑话之一是:为什么程序员会死在浴室里?因为洗发水瓶子上写着“揉泡沫,冲洗,重复。”
事实上,这是一个无限循环。显然,一个组织良好的程序员会“重复”这个循环指令,直到他死去。觉得这很可笑吗?但是计算机已经被带入这个循环很多年了。
事实上,这是一次典型的“叉形炸弹”袭击。虽然叉形炸弹可能只有几个字符长,但它可以使计算机耗尽自己的资源,而不能做其他任何事情。
在一些计算机语言中,这个小字符集可以定义一个无意义的函数,然后要求计算机重复执行它。电脑不会问为什么,只会问。但是,不要试图在家里运行此代码,因为它会大大降低您的计算机速度,甚至可能导致您的计算机崩溃。
2013年,剑桥大学的研究人员预测,计算机漏洞将每年给全球经济带来3120亿美元的损失。即使是微小的漏洞也会造成巨大的损失,例如,一行错误代码可能会使战舰无法运行。但是这些由很少字节组成的代码怎么会造成如此大的损失呢?
威斯康星大学的计算机科学家本·利布莱特说:“计算机会根据它收到的指令执行,它会执行你给它的任何指令。”计算机没有可依赖的常识。”
为什么有无限循环?Ben liblit说,由于一项任务经常被重复,它可以做许多无聊和耗时的事情,节省人类的时间,例如编辑一个大的名字列表和将所有名字的首字母大写。对于循环重复执行的次数没有硬性规定。理论上,只要计算机能应付,循环就可以永远重复执行。
第一个有记录的叉形炸弹可以追溯到1978年。类似于上面的例子,这个叫做wabbit的小程序所做的就是不断地复制自己。
像这样的代码(一种恶意软件)将被伪装成一个普通文件,并以电子邮件附件的形式进入受害者的电脑。如果受害者下载并运行该文件,等待触发的叉式炸弹将会引爆。
f-secure的网络安全专家Mikko hypponen也表示,当受害者打开压缩的文件夹时,黑客也可以让计算机解压更多的内部文件。这就是所谓的“压缩炸弹”,其中一个著名的压缩炸弹在解压缩前只有42字节。它可以填满受害者的硬盘,瘫痪用于提取文件的杀毒软件,耗尽计算机的内存。
2014年,一款用于加密敏感网络数据的计算机软件被发现存在严重漏洞。该漏洞被称为“心脏出血”,允许攻击者窃取私人数据,如密码或信用卡信息。萨里大学的Alan woodward说执行这次攻击的程序只有4个字节。
对于恶意黑客来说,使用很少的字节来完成毁灭性的动作是非常有用的。例如,2010年著名的twitter病毒可以打开弹出窗口。用户只需将鼠标滑动到推特上,浏览器就会弹出一个窗口,即使白宫的官方推特曾经受到影响。
曼达洛里安的网络安全专家史蒂夫洛德说,他最近研究的一个漏洞可能会将恶意代码插入一个数据包中。这是一个非常复杂的漏洞,它允许攻击者突破虚拟专用网络(vpn)的安全连接。
造成损害的最短代码应为“0”。除以0将产生一个不确定的数字,计算机不能处理这种情况。
史蒂夫·洛德说,这正是1997年9月发生在约克郡战舰上的事情。军舰上的一个程序被错误地除以0,导致整艘军舰在巡航期间完全关闭,不得不被拖回港口进行维护。
史蒂夫洛德说:“谢天谢地,这并没有发生在战斗中。”他还提到了一个名为“小银行家”的恶意软件,它感染了受害者的浏览器,每当受害者登录他的网上银行账户时,“小银行家”就会复制这些信息。它的大小只有20,000字节,但它感染了全世界数千个计算机系统。“小银行家在windows程序中真的很小。”
上面的例子并不意味着计算机本身充满了漏洞,但它确实证明了保护计算机系统免受恶意攻击是非常具有挑战性的。史蒂夫·洛德甚至说,有些错误相当“漂亮”,但美国海军可能不同意这一点。
正如本.利布莱特所说,无论执行的结果是有益还是有害,计算机都会严格遵守指令。他说:“计算机可以做非常有用的事情,也可以做非常破坏性的事情。”
无论如何,至少在大多数情况下,你可以重启电脑来解决问题。毕竟,“试着重新开始”和“如果不能,就分开”一样有用。
viabbc
推荐阅读:
Win 10补丁困住电脑,重启无限循环。你中枪了吗?