鼓励软件制造商到 2026 年停止使用 C/C++

根据产品安全最佳实践报告,联邦政府正在鼓励软件制造商放弃 C/C++,并采取其他可以“降低客户风险”的行动。特别是,CISA 和 FBI 将遵守内存安全指南的截止日期定为 2026 年 1 月 1 日。

报告涵盖指南和建议,而不是强制性规则,特别是对于从事关键基础设施或国家关键功能的软件制造商而言。这些机构特别强调了本地软件、云服务和软件即服务。

虽然没有直接指出使用“不安全”语言可能会取消制造商从事政府工作的资格,而且该报告“不具约束力”,但传达的信息很简单:此类做法不适合任何被归类为与国家安全相关的工作。

报告指出:“通过遵循本指南中的建议,制造商将向客户表明他们正在掌控客户安全结果,这是一项关键的安全设计原则。”

内存不安全的编程语言引入了潜在的缺陷

该报告将内存不安全的语言描述为“危险的,并且大大增加了国家安全的风险”。报告提到的第一个实践是内存不安全语言的开发。

至少自 2019 年以来,内存安全一直是讨论的话题。C 和 C++ 等语言“在内存管理方面提供了很大的自由度和灵活性,同时严重依赖程序员对内存引用执行所需的检查。”一个2023 年 NSA 内存安全报告指出。然而,报告继续指出,这些语言缺乏固有的内存保护,无法防止内存管理问题。可以利用这些语言中可能出现的内存问题。

到 2026 年 1 月 1 日,制造商应:

  • 以内存不安全语言编写的现有产品的内存安全路线图,“应概述制造商消除优先代码组件中内存安全漏洞的优先方法”。
  • 演示内存安全路线图将如何减少内存安全漏洞。
  • 展示遵循路线图的“合理努力”。
  • 或者,制造商应该使用内存安全语言。

NSA 批准的内存安全语言包括:

  • Python。
  • 爪哇。
  • C#。
  • 去。
  • 德尔福/对象帕斯卡。
  • 迅速。
  • 红宝石。
  • 锈。
  • 艾达.

请参阅:好处、风险和最佳实践(科技共和国)

其他“不良做法”包括糟糕的密码和缺乏信息披露等

CISA 和 FBI 标记为“异常危险”的其他做法包括:

  • 允许用户直接在 SQL 数据库查询字符串的原始内容中提供输入。
  • 允许用户直接在操作系统命令字符串的原始内容中提供输入。
  • 使用默认密码。相反,制造商应确保其产品提供“随机的、实例唯一的初始密码”,要求用户在安装过程开始时创建新密码,需要物理访问权限进行初始设置,并将现有部署从默认密码转换为非默认密码。
  • 发布包含 CISA 漏洞的产品已知被利用的漏洞 (KEV) 目录
  • 使用具有已知可利用漏洞的开源软件。
  • 未能利用多因素身份验证。
  • 如果确实发生攻击,则缺乏收集入侵证据的能力。
  • 未能及时发布 CVE,包括常见弱点枚举 (CWE),该枚举表明 CVE 背后的弱点类型。
  • 未能发布漏洞披露政策。

完整的报告包括组织可以用来遵守机构指南的建议的后续步骤。