上周,网络安全公司 CrowdStrike 因一次配置更新出错,导致全球数百万台采用 Windows 系统的计算机崩溃。此番宕机被广泛视为有史以来影响最大的灾难,导致阿姆斯特丹、柏林、迪拜、伦敦和美国各地的机场航班延误,还导致数家医院停止手术,全球无数企业陷入瘫痪。
日前,据几位消息人士透露,他们收到了 CrowdStrike 发来的一封电子邮件,该公司将向其合作伙伴提供一张 Uber Eats 礼品卡作为道歉,因为其认识到了“7 月 19 日事故所带来的额外工作”。
根据消息人士分享的截图,邮件中写道:“为此,我们衷心感谢并对给您带来的不便表示歉意……为了表达我们的感激之情,您的下一杯咖啡或夜宵由我们请客!”其他人也在 X 上发布了同一封邮件。
7 月 19 日事件发生后 CrowdStrike 向合作伙伴发送的电子邮件截图。
该电子邮件是由 CrowdStrike 的一个电子邮件地址以该公司首席商务官丹 Daniel Bernard 的名义发送的。根据 X 上的一篇帖子,在英国,这张代金券价值 7.75 英镑,按今天的汇率约合 10 美元。
一些发布礼品卡帖子的人表示,当他们去兑换优惠券时,收到了一条错误消息,称礼品卡“已被发行方取消,不再有效”。但 CrowdStrike 发言人 Kevin Benacci 向媒体证实该公司确实发送了礼品卡。
“我们确实将这些发送给了一直在帮助客户渡过难关的队友和合作伙伴。Uber 将其标记为欺诈行为,因为使用率很高。”Benacci 在一封电子邮件中说道。
“CrowdStrike 的所有人都明白此事的严重性和影响。”CrowdStrike 还公布了其首席执行官 George Kurtz 以及首席安全官 Shawn Henry 的道歉信。Henry 在领英上写道:“让你们失望了,对此我深感抱歉。”
Kurtz 在公司网站上发布的一条消息中说道,“没有什么比我们的客户和合作伙伴对 CrowdStrike 的信任和信心更重要。在解决这一事件的过程中,我承诺将完全透明地说明事情发生的原因以及我们为防止类似事件再次发生而采取的措施。”
一名网友打趣道:“CrowdStrike 以‘我错了’这种理由向所有人发放 UberEats 积分,这太 Z 世代了。”还有一些人嘲笑道, CrowdStrike 给出的赔偿数目仅仅“够开一场披萨派对!”
CrowdStrike 造成了多少损失
此次 CrowdStrike 安全软件的错误更新引发的整个故障事件,扰乱了全球的互联网服务,影响了航空、银行和医疗保健等众多行业。
据保险公司 Parametrix 称,银行和医疗保健行业以及主要航空公司预计将受到最严重的打击,全球经济损失总计可能达到 150 亿美元左右。
但根据网络安全公司的条款和条件,CrowdStrike 除了简单的退款外,无需支付任何费用,其 Falcon 安全软件(全球各地的公司和政府机构都在使用)的条款将责任限制在“已支付的费用”内。这意味着,如果一家公司向 CrowdStrike 索赔其业务损失或收入,那么它最多能收回的只是它向 CrowdStrike 支付的金额。
为承担处理 CrowdStrike 故障后果所产生的所有费用——包括雇用 IT 人员安装另一个更新来修复 Windows 机器上的问题、员工生产力损失、为客户解决问题以及需要向投资者提交相关证券报告的上市公司可能产生的法律费用,大多数公司将不得不求助于网络保险公司。
Parametrix 在一份声明中表示,全球保险损失总计可能达到 15-30 亿美元左右,其中给财富 500 强公司的总保险损失可能在 5.4 亿美元至 10.8 亿美元之间。
据悉,现在一些受此次网络故障影响的公司已经在向保险公司寻求赔偿。全球最大的保险经纪公司 Marsh 的一位高管表示,在此次网络安全危机发生后,已有超过 75 名客户准备提出索赔。
需要注意的是,对于提出索赔的公司来说,赔偿金不会立即到账,企业可能无法收回因网络中断而损失的资金。网络保险风险平台 Cyberwrite 首席执行官 Nir Perry 表示,某些网络保险政策包括对非恶意事件的承保,受影响的企业在提出索赔之前必须考虑某些变量,例如免赔额和等待期。
宕机事件敲响警钟:
Rust 优于 C/C ?
微软宕机事件发生后,微软 Azure 部门 CTO Mark Russinovich 提醒开发者应当关注更好的编码实践,借此提高系统可靠性,最终降低系统崩溃和发生蓝屏死机的可能性。
上周六,Russinovich 转了一条发布于 2022 年的推文,称“是时候停止在任何新项目中使用 C/C 了,而且在一切非 GC(垃圾回收)语言场景下都应使用 Rust。出于安全和可靠性的考虑,业界应该正式宣布弃用 C/C 这类语言。”虽然没有实证,但人们猜测这条推文应该是跟 CrowdStriek 引爆全球的更新错误有所关联。
引发蓝屏死机的原因多种多样,包括内存错误、驱动程序问题和 Windows 中的进程问题等等,而这一切都依赖于用 C/C 编写的内核。曾在谷歌工作的程序员 Zack Vorhies 表示,此次中断就是由 C/C 代码错误所造成。但谷歌研究员 Tavis Ormandy 驳斥了这种说法。
Vorhies 将大规模宕机归咎于空指针,即代码中指向无效内存位置的特定行。根据他的说法,“空指针来自不具备内存安全特性的 C 语言”。Ormandy 对 Vorhies 的观点予以驳斥,CrowdStrike 方面则回应称“这与 Channel File 291 或者任何其他 Channel File 中包含的空字节无关。”
微软的 Rust 应用史
多年以来,微软一直对 Rust 表示支持,而且也不断在内部推动代码迁移工作。但该公司也很清楚,从 C/C 迁往 Rust 的工程绝不可能一蹴而就。Russinovich 在最近一条推文中表示,“我们正在努力。Azure 中已经包含不少 Rust 代码,Windows 中也有 Rust 的成果存在。” 微软面向 Rust 的迁移方法也是经过认真规划的:第一步是创建原型应用程序,证明 Rust 代码与 Windows 系统的兼容性。此外,微软还陆续将保护系统硬件的外围应用程序迁移至 Rust。
据了解,微软在 Rust 工具开发方面投入了约 1000 万美元。
Azure 中的 Rust
Azure 作为首选应用目标,微软在其 Azure 云中广泛应用 Rust 语言。该公司正在部署一套使用 Rust 编写的虚拟机管理器,用以管理 Azure 环境中的 Hyper-V。Rust 还在 Azure Boost 中得到应用,Weston 称其为“Azure 的未来架构”。“我们将陆续把 Azure 主机上的更多性能密集型负载移交至专用卡(例如智能网卡及 / 或 FPGA)来运行。”该公司还希望为 Rust 建立一套类似于 Linux 操作系统的长期支持版本。
运用 Rust 保护硬件设备
微软企业和操作系统安全副总裁 Dave Weston 表示,微软正在部署基于 Rust 构建的安全固件实现保护效果的自主开发硬件。
该公司的 Secured-core 计划包括为 Surface 和 Windows PC 提供稳定且安全的启动环境。微软方面已经将大量组件从 C 语言转换为 Rust,借此增强系统稳定性并降低系统漏洞暴露在黑客面前的可能性。
微软正围绕 Rust 为其 Surface 硬件打造安全启动模块。UEFI(统一可扩展固件接口)中包含从系统启动到运行 Windows 操作系统的固件代码。UEFI 代码通常位于主板之上,并在计算机启动的同时接受访问。
UEFI 固件会被加载在内存当中,而 Rust 负责提供内存安全机制,以防止系统崩溃或遭到利用。以往不少硬件漏洞和安全问题都与计算机内存有着莫大关联。
美国政府下辖的主要安全机构——网络安全与基础设施安全局(CISA)就在去年 12 月呼吁企业改用内存安全技术。CISA 在咨询报告中表示,“除了 C/C 之外,大多数现代编程语言都已经具备内存安全属性。内存安全编程语言能够管理计算机内存,确保程序员无法引入内存安全漏洞。”
微软还为其安全处理器 Pluton 开发了一套完全由 Rust 编写的实时操作系统。Pluton 包含一个可信平台模块(TPM),用于存储生物特征数据等关键安全信息。
Weston 解释称,“微软致力于通过设计切实提高安全水平。这也是我们内部原研安全处理器,而没有坐等行业发展所带来的优势之一。我们将转向 Rust……这种语言在安全领域相较传统原生语言有着巨大优势。”
参考链接:
https://thenewstack.io/microsofts-it-outage-reminder-rust-is-better-than-c-c/
https://techcrunch.com/2024/07/24/crowdstrike-offers-a-10-apology-gift-card-to-say-sorry-for-outage/
https://www.reuters.com/technology/fortune-500-firms-see-54-bln-crowdstrike-losses-says-insurer-parametrix-2024-07-24/
https://www.businessinsider.com/businesses-claiming-losses-crowdstrike-outage-insurance-billions-losses-cyber-policies-2024-7