美国联邦政府警告:关键软件中的危险开发实践

11/3/2024, David Cassel

Tags: CISA FBI 网络安全 软件安全 内存安全 C++ Rust 开源 漏洞 关键基础设施

译自: https://thenewstack.io/feds-critical-software-must-drop-c-c-by-2026-or-face-risk/ 用于测试长文本排版效果。

联邦政府正在加强其对危险软件开发实践的警告,美国网络安全和基础设施安全局(CISA)和联邦调查局 (FBI) 就持续困扰关键基础设施的基本安全漏洞发出严厉警告。

CISA 和 FBI 最近联合发布了一份关于产品安全不良实践的报告,警告软件制造商注意不良实践,例如使用内存不安全的编程语言,如 C 和 C++

“在有现成可用的替代内存安全语言的情况下,使用内存不安全语言(例如 C 或 C++)开发用于关键基础设施或[国家关键职能] NCF 的新产品线是危险的,并且会显着增加国家安全、国家经济安全以及国民公共卫生和安全的风险,”报告称。

三个类别

报告称不良实践分为三类:

  1. 产品属性,描述软件产品可观察到的、与安全相关的质量。
  2. 安全特性,描述产品支持的安全功能。
  3. 组织流程和策略,描述软件制造商为确保其安全方法的透明度而采取的行动。

该报告针对开发软件产品和服务的软件制造商,包括用于支持关键基础设施或 NCF 的本地软件、云服务和软件即服务 (SaaS),报告称。

避免不良实践,遵循建议

此外,该报告还鼓励所有软件制造商避免这些产品安全不良实践。“通过遵循本指南中的建议,制造商将向客户表明他们正在对客户安全成果负责,这是安全设计的一个关键原则,”报告称。

“这份指南无疑是对美国政府早些时候就此事的声明的跟进,这些声明可以追溯到 2022 年,告诫技术提供商和企业采用者都应采用或迁移到内存安全语言,”Omdia 的分析师 Brad Shimmin 说。

“抛开所有新代码不谈,幸运的是,这份文件和美国政府都没有呼吁立即从 C/C++ 迁移到 Rust——这只是一个例子,”他说。“CISA 的安全设计文件认识到,软件维护者根本无法像那样批量迁移他们的代码库。”

该指南虽然是自愿的,但代表了 CISA 迄今为止在基线安全实践方面最强烈的立场——让公司注意到在关键基础设施方面哪些构成疏忽的软件开发实践。

时钟正在滴答作响

然而,软件制造商的时间不多了。公司必须在 2026 年 1 月 1 日之前创建内存安全路线图。

“对于用内存不安全语言编写的现有产品,到 2026 年 1 月 1 日还没有发布的内存安全路线图是危险的,并且会显着增加国家安全、国家经济安全以及国民公共卫生和安全的风险,”报告称。

此外,必须在同一日期之前从管理员帐户中消除默认密码。这些截止日期标志着从建议到预期标准的转变。

该报告还指出,内存安全路线图应概述制造商在优先代码组件(例如,面向网络的代码或处理加密操作等敏感功能的代码)中消除内存安全漏洞的优先方法。

“制造商应证明内存安全路线图将导致制造商产品中的内存安全漏洞显着、优先减少,并证明他们正在做出合理的努力来遵循内存安全路线图,”报告称。

“企业继续大规模维护 COBOL 和 Fortran 代码有两个很好的理由。成本和风险,”Shimmin 告诉 The New Stack。“移植数百万行代码在财务上根本不可能,也不是任何负责任的组织会承担的风险。”

然而,根据该报告,关键基础设施仍然存在“异常危险”的做法,例如:

开源

关于开源软件,该报告称应特别注意开源漏洞。其他建议包括:

“软件制造商应负责任地使用并可持续地为他们依赖的开源软件做出贡献,”报告称。

该报告还敦促提高透明度,指出:

这是件好事

最后,Shimmin 说,CISA 建议拥有关键软件的公司应在 2026 年初制定明确的攻击计划,这是件好事。他说,这很好,因为它将给行业更多时间来提出更巧妙的方法来确保我们关键软件资产的安全。

“这些方法可能包括硬件制造商弥补潜在的攻击载体,以及编程语言维护者提出诸如安全 C++ 提案)之类的想法,该提案呼吁为 C++ 创建一个超集,以解决内存安全问题,而无需强制进行重大代码重写,”他说。

纸老虎?

“CISA 正在取缔使用 C/C++ 或汇编程序构建的内存不安全应用程序。由于距离截止日期还有不到 15 个月的时间,用户和提供商将争先恐后地保持合规性,因为许多政府系统的关键资产仍在使用 C/C++,”Constellation Research 的分析师 Holger Mueller 告诉 The New Stack。“现在所有人的目光都将集中在提供商和开发者身上,看看是否能够达到最后期限——我们将在几个月内看到这个 CISA 命令是纸老虎、有牙的老虎还是一个大体上遵守的标准法规。时间会证明一切。”

转向内存安全

根据 Accelerant.dev 的创始人兼 Rust in Action 的作者 Tim McNamara 的说法,对于构建更安全软件的公司来说,形势肯定越来越严峻。该行业正逐渐远离不安全的做法,这是一个健康的转变。

“然而,该文件仍然留有很大的回旋余地来维持现状,”McNamara 告诉 The New Stack。“看来作者显然注意到不要越权。请注意,文本中使用了诸如‘强烈鼓励’、‘应该’和‘合理努力’之类的术语。”

此外,McNamara 说,该文件的要求也相当轻。新软件应该用内存安全的编程语言编写。拥有现有产品的软件生产商被要求在 2025 年制定“内存安全路线图”。

“这个路线图是生产商随着时间的推移减少内存安全错误的计划,”McNamara 说。“还有一些重要的例外。尽管许多软件往往会比预期存在更长时间,但对于在 2030 年报废的产品,不需要路线图。”

McNamara 指出,在 2007 年,MITRE 制作了一份名为不可原谅的漏洞的报告,其中将内存安全问题列为首位。然而,这些错误在软件开发中并不被视为疏忽。“我没有看到其他领域可以接受不应用已知解决方案来解决主要安全问题,”他说。

尽管如此,“观察行业如何回应评论邀请将会很有趣,特别是考虑到在此期间会有选举,”McNamara 说。“希望这些担忧能够超越政治争吵。”

CISA 已就其指南公开征求意见,截止日期为 2024 年 12 月 16 日。请访问联邦公报提交评论。