自学内容网 自学内容网

由恶劣事件: CrowdStrike发布案例更新导致微软全球蓝屏事件的启示

图片

前言

网络安全公司 CrowdStrike 周四发布软件更新后,机场、银行、证券交易所、911 服务、交通系统、酒店、新闻媒体、医院、紧急服务等开始出现臭名昭著的蓝屏死机 (BSOD)。在看似多年来最严重的 IT 中断中,大规模的网络安全软件问题正在全球范围内造成混乱。

图片

漂亮的蓝屏(1)

图片

耀眼的蓝屏2

看起来是这样的,壮不壮观?

CrowdStrike公司是干什么的?

CrowdStrike 为 Amazon Web Services、Microsoft、eBay、Visa、AT&T 和 82% 的美国州政府等客户提供云工作负载保护和端点安全、威胁情报和网络攻击响应服务。

CrowdStrike 首席执行官 George Kurtz 在 LinkedIn 帖子中表示,此次中断是由于单个 Windows 更新造成的,这意味着它只影响Windows 系统。Mac和Linux客户运行正常。

受这次影响,它的市值一下子迭去了超过10%以上。而其竞争对手的股票都纷纷上涨。道理很简单,客户经此次折腾,很多会逃离这家公司,会转向使用其竞争对手公司的产品。

George Kurtz 非常的会轻描淡写,不知道哪里来的底气。感觉这家公司如果不采取好的补救措施,估计真正离死也不远了。他很“大方”的补充说,该问题不是网络攻击或黑客攻击的结果,Crowdstrike 已识别并隔离该问题,并部署了相应的修复程序。

最后元凶

似乎最后的元凶也找到了。居然是刚入职的第一天,就做成了这个壮举。一个字:“服!” 太牛气了。看来,Crowdstrike公司对这位新员工是无比的信任啊。

图片

真凶入职才第一天......,  怎么祭天??

可是找到了又能怎么样呢?全球性的损失估计无以估量,就职就离职,也解决不了什么或弥补不了什么。这哥们以一己之力,比黑客还牛逼性的摧毁全球那么多台windows主机,我只能说,他比黑客还黑客。看他那神情,似乎有点儿一本正经的理直气壮。

手动修复的步骤

在网上也查到了相关的修复步骤,真是很烦琐。估计受害用户,人人咬牙切齿。呵呵。总共11步:(如果您知道如何在计算机上快速进入安全模式,请跳过前九个步骤(来自 Microsoft),直接进入后两个步骤(来自 CrowdStrike):)

1.按住电源按钮 10 秒钟以完全关闭设备。
2.再次按电源按钮重新打开设备。
3.在 Windows 启动的第一个迹象(通常是制造商的徽标)出现时,按住电源按钮 10 秒钟以关闭设备。
4.再次按电源按钮打开设备。
5.当 Windows 重新启动时,按住电源按钮 10 秒钟以关闭设备。
6.再次按电源按钮打开设备。
7.让您的设备重新启动进入自动修复,然后选择高级选项进入 Windows 恢复环境。
8.到达那里后,选择“疑难解答”>“高级选项”>“启动设置”>“重新启动”。
9.设备重新启动后,您将看到选项列表。从列表中选择选项 5,或按 F5 进入带网络的安全模式。
10.进入 C:\Windows\System32\drivers\CrowdStrike 目录。
11.删除“C-0000029*.sys”文件并重新启动计算机。

所幸的是,我们种花家的机器用不上这么高大上的安全公司的产品。也就没受什么影响了。微软这次躺枪,不知道它和CrowdStrike私下怎么和解。

编一个笑话:

    CrowdStrike会说:“大哥,就让小弟免费给您维护5年吧,不收您一分钱。”
    Microsoft:“再让你祸害我五年?” ......

分析与总结

咱们玩笑归玩笑,这起事件,实质上影响是非常恶劣的。这两家公司都是相关领域的头牌公司。连头部公司都能犯这样的错误,我们想想普通的相关公司是不是犯此类错误的几率会更高,只不过,他们发生的少,所以曝光度就非常高,也容易被放大。

1、新人的工作流程培训到位吗?

从这次事件的前因后果来看,让新人第一天上班(是否第一天,待考),就发布全球性的补丁,看来真是对他无比信任啊。这种补丁的发布,难道不是需要经验老到、成熟稳重的员工去操作吗?

从视频上看,他只是在自己的PC上简单的试了下,就认为“测试”通过了。然后,一顿操作猛如虎。全球性的补丁,一下子发布出来。这种神操作,怎么看,也不像是正规的做法。而CrowdStrike公司居然事后也并没有做任何相关的解释。真牛气。

稍有经验的补丁发布工程师,针对这种全球性的补丁发布,也都会采取逐步分区域发布,并进行相应实时监控,即算某区域临时出问题,他也可以临时停止发布,进行回滚补救,造成的损失也不至于这么大。

2、测试、测试、测试

如果我们这里要说,针对全球性服务、云环境,测试比那种本地部署,会来得更严格,大家相信吗?
而此次安全,毫无疑问,就犯了这种严重的错误。下面我们就聊聊测试TEST:

1)、Testable Code

写测试本身没有什么技巧。技巧是落在了要写出可以测试的代码。

2)、测试金字塔

请看下图:

图片

测试金字塔

自底往上:单元测试、组件测试、集成测试、系统测试、场景测试、手动测试

3)、单元测试

专注于单一方法或者面向对象的类,围绕着目标类周围的所有内容,会进行双向测试。

图片

单元测试

单元测试有哪些优缺点:

优点:
    1.开发阶段就可以完成
    2.可以与真实环境隔离
    3.快
    4.容易进行错误分析
    5.稳定
    6.维护成本低
缺点:
    1.大部分只能在模拟环境中运行

基于以上分析,光靠单元测试是不够的。

图片

光靠单元测试,仍然不够......

上图形象的描述了:虽然单元测试都通过了,但是作为一个整体,仍然“集成”失败,最后导致沉船的悲剧。

4)、集成测试

集成测试主要是用来检验各相关组件之间的交互是否工作。

图片

集成测试来弥补

5)系统与场景测试

系统测试主要以黑盒的方式,来检测整个系统。所有的场景都是真实的,并且确保能工作。

图片

系统与场景测试

图片

第一次试飞前,得有测试......

真实实例:只有在开发阶段结束时,采用系统和场景测试,就像将飞机的各个部件整合到一起,进行完整的测试,而不是只仅仅测试一下各个部件本身是否工作……, 这样才能进行第一次试飞。

系统与场景测试的优缺点:

优点:
    1.测试在真实环境中运行
    2.服务及组件之间的交互都能得到测试
缺点:
    1.只能在开发结束以后才能进行
    2.环境的搭建与配置比较复杂
    3.一般运行时间都比较长
    4.分析错误会比较费功夫
    5.大都比较脆弱
    6.维护成本比较高

3、测试的重要性

一个重要的结论是:如果测试是良好充分的,那么产品的代码也可以认为是足够的良好。反之,如果测试很糟糕或者压根就没有,所有的对于产品良好的期盼,将是泡影。

最后,如果以NodeJS为例,我们把测试金字塔,再分一下层,与相应的工具对应起来,就是下边的这个样子:

图片

完整的测试金字塔

从下往上,速度效率会越来越低,成本会越来越高,但基本上都是必须的。只有这些测试都完全通过,才能发布出符合预期的产品。

4、总结

我们重新回到这个案例本身,他的最后的系统与场景测试,谨慎怀疑没有完全做到位。同时手动测试更是随意性强。再加上最后发布策略,完全是激进式的操作,这样一叠加,可以说,基本上就完蛋了。做好一名架构师,那么,这个环节,更要引起重视。

这样看来,我们对测试,还不引起重视吗?没有良好的测试,基本上跟在游泳池里裸奔没啥区别。


原文地址:https://blog.csdn.net/iihero/article/details/140736579

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!