17611538698
webmaster@21cto.com

美国联邦政府:关键软件须在 2026 年之前放弃 C/C++,否则将面临风险

安全 0 743 2024-11-02 11:26:11

图片

导读:这可能是美国政府迄今为止在软件安全问题上采取的最强硬立场,它向软件制造商发出警告:必须修复危险的编码做法,否则就有可能被贴上疏忽的标签。

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

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

图片

https://www.cisa.gov/resources-tools/resources/product-security-bad-practices

报告这样指出:“在有现成的内存安全语言可用的情况下,使用内存不安全的语言(如 C 或 C++)开发用于关键基础设施或(如国家关键功能)NCF 的新产品线是危险的,并且会大大增加对国家安全、国家经济安全以及国家公共健康和安全的风险。”

三大类别


报告将不良做法分为如下三类:


  1. 产品属性,描述软件产品可观察的、与安全相关的质量。

  2. 安全特性,描述产品支持的安全功能。

  3. 组织流程和政策,描述软件制造商为确保其安全方法的高度透明度而采取的行动。


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

避免不良做法,遵循建议


此外,该报告还鼓励所有软件制造商避免这些产品安全不良做法。


报告称:“通过遵循本指南中的建议,制造商将向客户表明他们对客户安全结果负责,这是安全设计的关键原则。


Omdia的分析师Brad Shimmin这样表示说:

“该指导意见是对美国政府此前就此事发表声明的后续,这些声明可以追溯到 2022 年,当时它告诫技术提供商和企业采用者都要采用或迁移到内存安全语言。”

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

该指南虽然是自愿性的,但却代表了 CISA 迄今为止对基本安全实践的最强硬立场。

要让企业了解在关键基础设施方面什么构成疏忽的软件开发实践。

时钟在滴答作响


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


报告称:“对于使用内存不安全语言编写的现有软件产品,如果在 2026 年 1 月 1 日之前没有发布内存安全路线图,则是危险的,会大大增加国家安全、国家经济安全以及国家公共健康和安全的风险。


此外,必须在同一天之前取消管理员账户的默认密码。这些截止日期标志着从建议转向预期达成之标准。


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


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


“企业继续大规模维护 COBOL 和 Fortran 代码有两个很好的理由。成本和风险,”Shimmin 如此道。“移植数百万行代码在经济上根本不可能,任何负责任的组织都不会冒这个风险。


然而,根据该报告,关键基础设施仍然受到“极其危险”的做法的影响,例如:


  • 默认密码。

  • 直接 SQL 注入漏洞。

  • 缺乏基本的入侵检测。

  • 缺少多因素身份验证。


开源软件


关于开源软件,报告这样指出,应特别关注开源漏洞。其它建议包括:


  • 公司必须维护软件物料清单(SBOM)。

  • 需要缓存依赖项,而不是从公共源中提取。

  • 需要对他们所依赖的开源项目做出负责任的贡献。


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

该报告还呼吁提高透明度,并指出:

  • 公司必须发布漏洞披露政策。

  • 需要为所有严重漏洞发布 CVE。

  • 必须提供有关安全问题的清晰文档。

  • 预计至少维护六个月的安全日志。


这是一件好事


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


“这些手段可能涉及硬件制造以支撑潜在的攻击媒介,以及编程语言维护者提出类似安全 C++ 提案的想法,该提案呼吁为 C++ 创建一个超集,以顺利解决内存安全问题,而无需强制进行大量代码重写”。


大家怎么看?

作者:聆听音乐的鱼

评论