导读:微软蓝屏事件已经让很多大型机构损失近 10 亿美元。那么我们的 IT 组织可以从这个让世界陷入瘫痪的软件更新中学到点什么?
此时的我正坐在Linux桌面前,而 Linux 服务器在后面的机架上嗡嗡作响,CrowdStrike 崩溃并没有直接影响到我。就像地球上几乎所有其他人一样,间接地事件,这是发生的另一个故事。
也有一些工作伙伴被困在机场,同事在事件发生 48 小时后仍在修复一个又一个出现故障的 Windows 系统,朋友们不得不用现金购买商品。
有人分享了自己的解决方案。Reddit上的几位系统管理员正分享一个可能的修复方法,需要将 Windows PC 启动到安全模式或 Windows 恢复环境并删除有问题的 CrowdStrike 文件。
周日微软还发布了修复因 CrowdStrike 在其自己的修复页面上引用的更新而遭受 BSOD 的计算机的步骤。
https://www.crowdstrike.com/falcon-content-update-remediation-and-guidance-hub/
这一切都不应该发生。
Synopsys 软件完整性小组总经理Jason Schmitt在向媒体发布的声明中指出:
“这提醒我们,我们生活在一个日益数字化的世界,软件几乎支撑着我们生活的方方面面——从交通和应急服务到银行、零售甚至餐饮服务。软件问题可能导致严重的业务问题——在某些情况下,这些问题会影响消费者认为理所当然的许多必需品。”
我想重复一遍:这些说的都不行。让我来数一数过往的教训。
1. 单一系统是危险的
根据微软的数据统计,只有850 万台 Windows 设备受到影响,占所有 Windows 机器的不到 1%。但这些数字是保守的,并不能说明全部情况。
根据商业数据分析公司6sense.com的统计, CrowdStrike 是排名第一的商业端点安全公司,拥有超过 3,500 名客户。这个数字听起来可能不大,但其中四分之一使用节点安全的公司都来自 CrowdStrike。这些公司往往都是大型企业。因此,尽管陷入无休止重启的系统数量并不多,但其影响却是巨大的。
云计算公司Civo首席执行官马克·博斯特 (Mark Boost ) 在向媒体发布的声明中表示:“此次中断的规模凸显了过度依赖单一系统或提供商的风险。这是一个警示,规模和声誉并不能保证公司不会遭遇重大技术问题或安全漏洞。即使是规模最大、最成熟的公司也必须保持警惕,不断更新和保护其系统。”
2. 糟糕的代码是危险的
根据开发工具公司NeoSync的首席执行官Evis Drenova在 X 上提出的一种流行理论,其 Falcon Sensor 程序灾难性安全更新的根本原因是其C++ 代码中的空指针错误。
CrowdStrike似乎否认了这一点。
著名的Google漏洞研究员Tavis Ormandy也通过 X 推文表达了不同意见。Ormandy 和Mac 安全网站及工具套件Objective-See的创建者Patrick Wardle也对 X 发表了看法,他们认为问题出在逻辑错误上。
最终,我们会确切地找出问题所在,但毫无疑问的是,这个糟糕的代码根本就不应该发送给客户。
3.质量保证是绝对必要的
这个问题始于 CrowdStrike。该公司的质量保证 (QA) 团队为何会放出这个更新,这个问题可能会导致其它公司很多人被解雇。
虽然,他们并不是唯一应该为这一灾难承担责任的人。
今年 4 月,在西雅图举行的北美开源峰会上,微软 Linux 平台组高级项目经理Jack Aboutboul讨论了“懒惰的系统管理员”问题。典型的懒惰管理员会安装软件、打开自动更新并处理最新的紧急问题。这很好……直到其中一个更新导致系统全面崩溃。
他们应该在每个新补丁发布时对其进行测试。在他的演讲中,Aboutboul 谈论的是 Linux 发行版更新,但同样的想法也适用于所有关键任务软件。
正如软件开发和质量保证机构Redwerk和QAwerk的创始人Konstantin Klyagin在向新闻媒体发布的声明中指出的那样:
“自动化测试可以确保即使是微小的更改也不会引入新的错误。这对于大规模更新尤其重要,例如 CrowdStrike 的更新,因为仅靠手动测试是不够的。”
谁不这样做?!至少有些公司似乎仍然不愿这样做。
真的有那么多组织没有完成这个基本步骤吗?有人认为 CrowdStrike 应该为此负责,因为这个安全数据补丁“是一个绕过客户端暂存控制的渠道更新,无论他们是否愿意,都会向所有人推出”。
由于绕过了客户的部署控制,更多的公司受到了损害。我觉得这太有可能了,因为有这么多企业受到了这次故障的打击。同样,问题仍然存在:“为什么有人会毫不犹豫地部署如此重要的补丁?”
4.分阶段推出以避免灾难
一个相关的生产问题是,许多组织同时将更新推送到所有系统。这是一个非常低级的错误;这种事情不应该发生,但我们却真实遇到了这种情况。
是的,有人反对分阶段推出——当不同的团队使用不同的软件版本时,用户可能会感到困惑。但是,当涉及到不能接受故障的关键任务系统时,您需要对任何升级都要格外谨慎。
此外,分阶段推出的方法有很多:包括滚动式更新、蓝/绿、金丝雀和 A/B 测试。选择某一种方法都可以。让它为您的企业服务,只是不要将所有升级都放在一个最大的篮子里。
此外,如果问题突然出现,强大的回滚程序对于恢复到稳定版本至关重要。难道你不想只需按一下按钮就可以回到正常工作的系统吗?现在成千上万的 IT 员工一定希望这么干。
5.灾难恢复和备份是必须的
这应该是不言而喻的,但您必须有一个灾难恢复和值得信赖的备份计划。
“我与几位CTO、CISO 和 CSO 进行了交流,他们正在考虑触发备份恢复协议,而不是手动将每台计算机启动到安全模式,先找到有问题的 CrowdStrike 文件,删除它,然后重新启动到正常的 Windows,”安全专家Eric O'Neill在一份新闻声明中表示。“没有投资快速备份解决方案的公司将会陷入困境。”
确实如此。的确,在云计算时代,灾难恢复和备份不再像以前那么简单。但它们至关重要。在这种情况下,老式的灾难恢复方法和备份将大有帮助。
6.您需要增强监控和事件响应
此次中断事件影响到了全球,凸显了对先进监控工具和强大事件响应计划的需求。应建立实时监控和警报系统,以便在问题发生时及时发现问题。IT 团队应制定详细的事件响应计划,并制定明确的协议,以便快速识别、隔离和解决问题。这些计划应包括根本原因分析和事后审查,以不断改进响应策略。
但是,说起来容易做起来难。
Cockroach Labs首席执行官兼联合创始人Spencer Kimball在向新闻媒体发布的声明中表示:“应对当今数字时代的挑战需要企业制定积极主动且实用的策略来缓解中断并确保弹性。”
他补充道:“中断不是我们要完全解决的问题。云环境只会变得越来越复杂,并且相互关联。这种大规模的复杂性将继续增加风险,特别是对于仍处于云采用初始阶段的企业而言。持续监控和警报对于在问题升级之前检测和解决问题至关重要。”
致力于实时查询性能的Hydrolix公司副总裁 Anthony Falco 表达了与 Kimball 相同的想法:
“这次大规模中断凸显了公司面临的全新现实:如今推动业务发展的全球分布式软件平台是一个复杂的相互依赖网络,并非全部受任何一方控制,”Falco 表示。“即使一个小小的错误就可能让全球业务陷入停顿。
“我们需要一种新的可观察性方法——这种方法是实时的,可以简化来自无数来源的大量数据流的管理,以便在事件蔓延之前检测到并缓解。”
7.为下一次做好准备
CrowdStrike/Windows 的严重事件提醒我们:如果管理不当,即使是例行维护也可能导致严重中断。这一事件凸显了现代 IT 系统的互联性以及广泛使用的软件故障的深远后果。
通过从此次事件中吸取教训,并实施强有力的风险管理策略,IT 团队可以更好地为未来类似事件做好准备并减轻其影响。
我们需要做得更好,我们必须做得更好。我本人已经足够资深了,我还记得能够战胜第一个重大、普遍的安全问题,即 1988 年的莫里斯蠕虫。当时,技术问题只会困扰那些从事技术工作的人员。
我们早已走过了那些日子。
作者:长安