发新话题
打印【有0个人次参与评价】

转: WannaCry这个锅,微软究竟该不该背?

转: WannaCry这个锅,微软究竟该不该背?

WannaCry这个锅,微软究竟该不该背?
Original 2017-05-17 Dexter seattleit
【今日作者】Dexter。读书巨慢理事会会长


最近几天科技圈最重要的事,莫过于肆虐全球的勒索病毒WannaCry(pt)。迄今为止,这个病毒已经让数万台电脑中招,包括医院学校水电站甚至ATM取款机,当然受害最多的还是个人电脑。

然而,这场大规模病毒攻击事件的真正可怕之处,在于WannaCry的源头“永恒之蓝”,正是美国国安局(NSA)开发的攻击工具。这次事件让广大吃瓜群众们第一次深切感受到:网络战争到底是什么样。


EternalBlue - “永恒之蓝”
不得不说NSA很擅长取名啊...

这不是第一次美国政府机构成为病毒的来源了。两个月前,在维基解密公布的一批联邦调查局(FBI)使用的攻击手段中,全球程序员们广泛使用的Notepad++赫然上榜。Notepad++的开发者在修复漏洞的更新时愤怒的写道:我们生活在一个操蛋的世界里("We are in a f**king corrupted world")。

不过这一次,除了已经臭名昭著的NSA,微软也成为了发泄愤怒的对象。上周末,美国主流媒体们对微软进行了一波口诛笔伐,其中纽约时报的评论写到:

微软一边占据着市场统治地位,赚着高额利润,另一边却抛弃了使用自家产品的消费者(微软在2014年停止了XP的支持),任其受黑客们宰割。他们从一开始出售的就是带有缺陷的产品,想要修复问题?那就继续交钱吧!


那么,问题来了
WannaCry这个锅,该不该微软背?


站在程序员的角度,小编认为:对于WannaCry的大规模传播,微软确实负有责任,毕竟漏洞来自于Windows系统。但如果要把锅甩给微软,那微软还真够冤的!

▌首先要搞清的——是漏洞和后门的区别。WannaCry利用的确实是Windows系统的漏洞,然而漏洞是无意间造成的,后门才是开发者故意为之。如果WannaCry依靠的不是漏洞而是Windows系统里的后门,那么微软无疑会和NSA一样千夫所指。即使作为全球最大的科技公司之一,也会失去所有客户的信任,甚至可能就此走向破产。


美国科技公司极度重视客户的信息安全
Apple甚至为此与FBI对簿公堂

任何一个写过程序的人都应该知道:这个世界上没有完美无缺的程序。任何程序(注意,是任何程序)都有可能出错,而只要出错就有被利用的可能。哪怕只有一行简单的Hello World,在极端情况下也有出现异常的可能。不信?不妨看看这篇文章,保证你大开眼界:有一些bug,她们来自异次元,却与你情定三生。

▌正因如此,微软才要在每一代操作系统发布后继续推送各种补丁。事实上,WannaCry的所利用的漏洞,早在Windows 8系统里就已不复存在。在WannaCry病毒大规模爆发的2个月前,微软就已经向Windows 7系统推送了补丁,因此这次中招的电脑,绝大多数使用的仍是Windows XP系统。



Windows XP上市于2001年,距今已经17年了。尽管微软对Windows XP的支持期已经结束,但是考虑到这次病毒的严重程度,微软还是为Windows XP和Vista系统发布了专门的补丁。说实话,这次中招的电脑里估计有不少使用的还是盗版系统,也谈不上是微软的“用户”了。能做到这一步,微软也算够意思了。


Aiden Pearce这样的黑客
可能只存在游戏里

▌不要忘记这次病毒事件真正的黑手:制作勒索病毒的黑客们。说实话,这些年来有意或无意为黑客们洗白的电影和游戏为数不少,让很多人(尤其是青少年)不知不觉间开始认为黑客是自由的卫士,正义的化身。而这次的WannaCry事件,证明那些想法太天真了。对于大部分黑客们来说:入侵,盗窃,攻击,勒索,才是他们的拿手好戏,而这次他们的矛头,直接对准了网络世界里“手无寸铁”的无辜人群。

靠这等伎俩来勒索钱财,真心Low爆了。

TOP

与你情定三生的bugs

有那么一些bug
她们来自异次元
那么遥远
却又如此地贴近生活

“电子邮件无法发送到 500 英里以外”
Bug界最经典的传奇之一

我在做校园的邮件系统管理员的时候,有用户向我抱怨说:他们不能发送超过500英里距离的email...

如果你之前没有听过这个故事。
如果你就是这个管理员。
此刻是否一脸懵逼。

补充材料:
用户中有位地理统计人员,还添油加醋地制作了一张邮件发送失败地图,地图上显示,她邮件的送达区域半径比500英里就多那么一点点:半径内的收件人,全收到了,之外的,全失败了。



请给出你的debug plan。
别说是邮票没贴够。


真相:
一次软件升级导致远程服务器超时时间被设为0。在一个具有典型负载的特定机器上,零超时意味着如果连接时间稍微超过3毫秒,服务器就会终止连接。而以光速传播的电信号,在3毫秒的时间内所能到达的距离大约是:
0.003 * c (光速) = 558.84719 miles



“只有在星期三才会崩溃的系统”

一家医院用来监控病人健康的数据库,每到周三,会自己崩溃。

我在周三的时候通常也会崩溃。
因为那天有组会。
但我感觉这应该不是这道问题的答案。

补充材料:
该事件中,最大的难度在于,一周只有一天有机会debug。
该系统记录日志是用 C 风格的代码编写的,把日志字符串记录到了一个固定长度的缓冲区中,其中日志时间一栏,格式例如“Monday, July 17, 1997, 10:38:47.123“。

请给出你的debug plan。

真相:

因为周三的日志的时间一栏,缓冲区恰好溢出了。
(就差一个字节写不下)


不会有来自星星的bug
也没有哪个bug是太阳的后裔
所有那些你认为的、不惜穿越过时空,
来与你情定今生的bug
都特么是你曾经的二比惹的祸



故事继续。

“当我坐在窗边的时候,内存读写就会失败”

给一个自己设计的SD卡控制器写驱动,从五月开始调试,一直很顺利,到了七月份突然开始出现间歇性的SD卡读写失败,而且越靠近窗户,失败频率越高。

也许坐在窗前写程序,
本身就是一个错误
每次我坐在窗前的时候,
都会想
隔壁班的
那个女孩
怎么还没经过我的窗前

补充材料:
驱动程序是要下载到控制器的板子上的。当这块板子放置于窗边,特别是正午的时候,调试几乎总是失败。

请给出你的debug plan。

真相:
电路板上芯片的正常工作温度有限,当超过一定的温度时它就带不动负载了,而7月的正午,太阳正好会通过窗户会照到板子,导致温度过高。



“摇动游戏手柄的时候,游戏存档就会失败”

在开发PS1游戏“袋鼠大进击”这款游戏的存档/读档时候遇到的。Bug的症状是每隔一段时间存档/读档都会超时失败。并且十分随机。

像我这种游戏从来都是一命通关的人
其实不是很在乎能不能存档的

补充材料:
该事件中的难点在于重现bug。当开发人员把可能出错的代码已经注释到了四大皆空的时候,bug依然随机出现。偶然间,测试发现了快速重现Bug的方法:一边摆动手柄,一边存档。

请给出你的debug plan。

真相:
PS的时钟在高频率下运行时,会影响到主板旁边的晶振,造成手柄控制器的内存卡控制器之间的串扰。手柄上一有信号,内存就被干扰了。



最后给出一个真实的灵异故事。
(转自知乎)
某公司有个码农工作压力太大,天天晚上加班到半夜,最后受不了跳楼死了,他的机位从此就一直空着。但令大家都感到非常奇怪的是,有几次早上来上班时却发现这台机子竟然开着!大概是因为电源有问题吧,但这个项目经理是个疑神疑鬼的人,每次经过这里都绕着走。

到了新一届招人,一个女孩被分到这个项目组。项目经理让她坐这个空着的机位,谁也没敢告诉她之前的事,只是让她接手原来同事的工作。过了没几天,她写的代码被测出来一个bug,可她水平确实比较差,怎么都调不通。她又不敢问同事,只好向男友求助(她男友是另一家公司的大牛)。男友说现在很忙,晚上10点以后才有空。 那天她只好等到晚上10点,男友终于有空了。这时公司里只剩下她和项目经理两个人。

她男友通过远程桌面帮她调试的时候,她要去个厕所便起身离开了坐位。过了一会项目经理下班回家,经过这里时用余光看到屏幕的上的代码好像在动!他定睛一看,屏幕上的代码正在一行一行的往下写,可是机位上并没有人!!!



第二天这个项目经理没来上班,而是给HR发了封邮件,提交了辞职申请。

以上就是一个程序员版的田螺姑娘的故事。

TOP

回复 2楼pp_dream 的帖子



我是硬件的干活,不知道软件干活的码农还有这么些可乐的事

一直认为软件bugs总是比硬件bugs容易对付,当然咯,你们只要改程序,人工而已;我们出了bugs,严重的可是要respin!知道多少银子吗?

前些日子我们前一代一颗芯片在field test中failed,是芯片SerDes的一项抗72小时的指标failed,于是validation team好惨啊,因为那个bug要等整整72小时才出现一次,你要捕捉到所有数据,然后分析。。。

这月初老板说该bug终于解决了,这也成了我们重要的一项lesson learned,什么呢,是cross clock domain reset issue!!!

TOP

我们一直做networking processors,customers都是电信大户,芯片用于base stations,这个系统黑客是进不去的,而几个电信大户的工程师们也都好沟通,但凡需要改动软件,只有我们吱声,他们总会配合。这样的合作关系被我们VP骄傲地成为marriage relationship

自从被业界老大收购后,我们做的东东要用在datacenter里,这下子才知道我们以前只做basestation applications还是很幸福的。Datacenter application的基本要求是要能经得起恶意攻击,就是要对付那些个黑客们的恶意攻击而不倒,工作量之大,咳咳,我继续干活去了。。。

TOP

回复 2楼pp_dream 的帖子

某留言怎么写:
其实有时候奇葩用户才能发现bug,之前我做的一个搜索窗口,列出搜索结果的时候双击item就打开,从来没有问题,那天看到bug reoort说双击就报错,我怎么都repo不了,只好去请教用户,人老兄搜索一个不存在的条件,下面结果当然是空的,然后依然在空list里双击,然后果然报错了,因为index invalid!靠,我到现在还记得那种震撼,谁tm会双击空窗啊…这就是不懂编程的人才测得出的bug啊!

TOP

回复 5楼pp_dream 的帖子

估计一些应用软件的奇葩bug确实要脑残们才能发现

硬件设计的一些奇葩bugs,常常是被刚出道的新手发现,因为他们思维没有定式,而我们这些老民工常因思维定式无法透视隐藏的bugs。

TOP

发新话题