从 CrowdStrike 的错误更新中吸取的教训:健壮的发布流程至关重要

文摘   2024-07-23 09:52   中国香港  

社区文章作者:Andrés Vega,M42 和 CNCF TAG 安全技术负责人

最近发生的 CrowdStrike 的 Falcon 安全软件事件,为整个行业敲响了警钟:拥有健壮、安全的发布流程至关重要。此类事件提醒我们,软件更新中的问题可能带来的后果。这些后果会影响到各种关键行业和服务,从政府机构和金融机构到医疗保健系统和紧急服务。

事件

2024 年 7 月 18 日,CrowdStrike 的 Falcon 安全软件的错误更新导致其客户群中出现大规模系统崩溃。基于 Windows 的系统遇到了蓝屏死机 (BSOD),即 Windows 系统的内核崩溃,导致关键服务出现重大中断,包括政府机构、银行、航空公司、支付处理商、911 报警中心、电视网络和医疗保健系统。

此次事件的后果很严重,各个组织都在努力实施修复措施,从简单的重启到涉及加密磁盘的复杂恢复程序。这种情况凸显了在软件发布流程中需要更强大的安全保障。

纽约大学教授、in-toto 联合创始人 Justin Cappos 对此事件表示震惊:

“任何组织,更不用说安全公司,竟然会没有健壮的软件供应链验证机制,这令人难以置信。软件可以在没有测试的情况下发布,这表明存在疏忽,我震惊地看到一家主要的安保公司会犯这样的错误。”

这句话强调了事件的严重性,以及所有组织,尤其是那些处理关键安全软件的组织,都需要健壮的软件供应链验证。

自我造成的勒索软件比较

此次事件中一个特别令人担忧的方面是由密码学和基础设施工程师 Tony Arcieri 在 Mastodon 上提出的。他将这种情况与自我造成的勒索软件攻击进行了比较:

这种比较强调了不仅要拥有健壮的发布流程,而且要维护适当的密钥管理实践的重要性。如果没有这些恢复密钥,组织就会发现自己无法访问自己的加密数据,这与勒索软件攻击的影响类似,但是由他们自己的安全措施造成的。

健壮的发布流程的必要性

此次事件强调了健壮的发布流程的必要性,这些流程不仅是指南,而且是技术上强制执行的安全保障。正如 Cappos 指出:

“发布流程不仅仅是最佳实践清单。它们应该以技术方式强制执行,使其难以绕过这些安全保障。这种技术强制执行是防止类似我们现在看到的事件的关键。”

考虑到这一点,让我们探讨健壮的发布流程的关键组成部分:

  1. 全面测试: 在与生产系统高度相似的环境中对更新进行彻底测试。
  2. 完整性验证: 使用密码学技术验证发布流程中每个步骤的完整性,确保未经授权的更改不会在未被检测的情况下进行。
  3. 分阶段推出: 实施逐步推出策略,以便在影响广泛用户群之前检测到问题。
  4. 快速回滚机制: 当检测到问题时,能够快速回滚到以前的稳定版本。
  5. 透明的沟通: 向受影响的用户清晰、及时地传达有关问题性质和解决步骤的信息。
  6. 适当的密钥管理: 确保加密密钥和恢复密钥得到妥善管理,并在需要时随时可用。

通过在软件中强制执行这些流程,组织可以创建更强大的系统,在这种系统中,在没有经过所有必要的安全检查和平衡的情况下发布软件更新变得极其困难,甚至不可能。

in-toto:安全可验证软件更新的蓝图

在 CNCF 安全咨询小组,我们强烈建议采用可以帮助防止此类事件发生的框架。in-toto 就是这样一个框架,它提供了一种全面的供应链安全方法。

什么是 in-toto?

in-toto 是一个开源框架,它使用密码学来确保软件供应链的完整性。它允许定义供应链布局,并创建有关链中步骤的密码学可验证元数据。

in-toto 布局指定:

  1. 软件供应链中应该发生的步骤
  2. 这些步骤应该发生的顺序,这些步骤将被强制执行为对最终产品进行的验证程序。
  3. 谁获授权通过使用加密密钥执行每个步骤。
  4. 每个步骤应该使用什么材料(输入)以及应该生成什么产品(输出),以及阈值 确定一个步骤被认为有效需要多少签名。

简单 in-toto 布局的示例

以下是一个关于基本软件发布流程的 in-toto 布局的简化示例:

{
  “steps”: [
    {
      “name”: “code-review”,
      “expected_materials”: [
        [“MATCH”, “src/*”, “WITH”, “PRODUCTS”, “FROM”, “coding”]
      ],
      “expected_products”: [
        [“MATCH”, “src/*”, “WITH”, “MATERIALS”, “FROM”, “coding”]
      ],
      “pubkeys”: [“4895703d8b8f0a8369348e5e2f364e8a312273e8”],
      “expected_command”: [“git”, “push”, “origin”, “main”],
      “threshold”: 1
    },
    {
      “name”: “unit-test”,
      “expected_materials”: [
        [“MATCH”, “src/*”, “WITH”, “PRODUCTS”, “FROM”, “code-review”]
      ],
      “expected_products”: [
        [“CREATE”, “test-results.xml”]
      ],
      “pubkeys”: [“c8650e5c8a17c1f83a2db650f438e899bd76e62c”],
      “expected_command”: [“pytest”, “tests/”],
      “threshold”: 1
    },
    {
      “name”: “build”,
      “expected_materials”: [
        [“MATCH”, “src/*”, “WITH”, “PRODUCTS”, “FROM”, “unit-test”]
      ],
      “expected_products”: [
        [“CREATE”, “dist/app-1.0.tar.gz”]
      ],
      “pubkeys”: [“f3b93b345b2e6f356dc4a418d66213be51b4e5f4”],
      “expected_command”: [“python”, “setup.py”, “sdist”],
      “threshold”: 1
    }
  ],
  “inspections”: [
    {
      “name”: “final-product-test”,
      “expected_materials”: [
        [“MATCH”, “dist/app-1.0.tar.gz”, “WITH”, “PRODUCTS”, “FROM”, “build”]
      ],
      “expected_products”: [
        [“CREATE”, “test-results.xml”]
      ],
      “run”: [“pytest”, “tests/”]
    }
  ]
}

in-toto 联合创始人、普渡大学助理教授 Santiago Torres-Arias 阐述了 in-toto 提供的深度保证。

“供应链完整性不仅仅是关于保护软件的‘内容’。只有通过回答‘如何’制作才能真正确保其完整性。这就是 in-toto 闪耀的地方——它使整个软件供应链中的自动化安全和合规性检查成为可能,确保不仅最终产品,而且其创建的每个步骤都是可验证和安全的。”

这种全面的软件供应链完整性方法对于防止软件更新导致的广泛停机至关重要。通过验证开发和发布流程的每个步骤,in-toto 提供了一个框架,可以在潜在问题影响最终用户之前将其捕获。

in-toto 布局如何帮助防止类似 CrowdStrike 更新问题的事件

  1. 强制执行流程: 通过定义明确的布局,in-toto 确保遵循发布流程中所有必需的步骤,从而减少跳过关键步骤(如彻底测试)的可能性。
  2. 输入和输出的验证: 验证每个步骤的材料和产品,确保在流程中不会引入意外更改。
  3. 授权操作: 通过指定谁可以执行每个操作,in-toto 降低了软件被未经授权或意外更改的风险。
  4. 可审计性: 布局提供了有关发布流程中应该发生什么的清晰记录,这使得审计和识别潜在问题变得更容易。
  5. 最终产品验证: 检查步骤确保最终产品在发布之前满足所有指定标准。

通过实施 in-toto,以及精心设计的布局、全面的测试程序、门控标准和逐步推出,组织可以显著降低发布错误更新的风险,从而防止类似 CrowdStrike 更新问题的事件。

CNCF 总经理 Priyanka Sharma 强调了维护软件更新系统完整性的重要性:

“最近发生的 CrowdStrike 软件更新事件,提醒我们,在我们日益互联的数字世界中,安全的软件供应链至关重要。在 CNCF,我们一直倡导在整个软件生命周期中采用健壮的安全实践和工具。此事件强调了需要全面的端到端安全措施,这些措施超越了传统方法。这就是我们支持 in-toto 等项目的原因,这些项目为确保软件供应链的完整性提供了一个框架。随着我们不断前进,组织不仅要实施最佳实践,而且要利用尖端工具和框架来防止此类事件发生。我们数字基础设施的安全是共同的责任,CNCF 致力于促进能够增强云原生生态系统安全性和可靠性的技术的开发和采用。”

总结

最近发生的 CrowdStrike 事件有力地提醒我们,在人们日常生活中依赖的软件系统中,安全、健壮的发布流程至关重要。通过从这次事件中吸取教训,并实施 in-toto 等框架,我们可以努力防止将来发生类似事件,确保我们都依赖的软件的稳定性和安全性。

作为 CNCF 安全咨询小组,我们敦促所有组织借此机会审查和改进其发布流程。我们数字基础设施的安全取决于我们共同致力于软件开发和部署的最佳实践。

了解更多并开始使用 - https://in-toto.io/


点击【阅读原文】阅读网站原文


文章转载自CNCF点击这里阅读原文了解更多

联系Linux Foundation APAC




Linux基金会是非营利性组织,是技术生态系统的重要组成部分。

Linux基金会通过提供财务和智力资源、基础设施、服务、活动以及培训来支持创建永续开源生态系统。在共享技术的创建中,Linux基金会及其项目通过共同努力形成了非凡成功的投资。请关注LFAPAC(Linux Foundation APAC)微信公众号。

LFAPAC
Linux基金会通过提供财务和智力资源、基础设施、服务、活动以及培训来支持创建永续开源生态系统。在共享技术的创建中,Linux基金会及其项目通过共同努力形成了非凡成功的投资。
 最新文章