美国网络安全机构 CISA 和 FBI 已更新其关于高风险软件安全不良做法的指导,其中纳入了公众意见征询期间收到的反馈。
该指南名为《产品安全不良实践》,概述了被认为极其危险的安全实践,提出了解决这些问题的建议,并敦促关键基础设施软件制造商优先考虑安全性。
该指南是一份不具约束力的文件,涵盖与产品属性、安全功能以及组织流程和政策相关的危险不良做法,包括使用内存不安全的语言、默认密码和具有已知漏洞的组件、缺乏多因素身份验证 (MFA) 和日志记录,以及未能及时发布带有 CWE 的 CVE。
经过一个半月的公开评论期,CISA 采纳了 78 条公众评论的反馈,包括新的不良做法、修补已知利用漏洞 ( KEV ) 目录中缺陷的更明确时间表、以及有关内存安全编程语言的背景等。
更新后的指南包括有关硬编码凭证、使用不安全或过时的加密功能以及产品支持的三种新的不良做法,并包括更多关于防止 SQL 注入和命令注入错误的示例。
此外,它使用针对操作技术产品的特定语言更新了 MFA 部分,并建议软件制造商应支持防网络钓鱼的 MFA。
CISA 和 FBI 指出:“本文件适用于开发软件产品和服务的软件制造商,包括本地软件、云服务和软件即服务 (SaaS)。这也适用于在运营技术 (OT) 产品或嵌入式系统上运行的软件产品。”
然而,这两家机构建议所有软件制造商审查该指南并避免其中描述的安全不良做法,向他们的客户表明他们对客户安全结果负责,这是 CISA 敦促组织遵守的安全设计原则之一。
两家机构指出:“CISA 和 FBI 敦促软件制造商在整个产品开发过程中优先考虑安全性,以降低客户风险。”
概述正如网络安全和基础设施安全局 (CISA) 的 “安全设计”计划中所述,软件制造商应确保从软件开发开始到整个开发生命周期,安全性都是核心考虑因素。本自愿指南概述了被认为极其危险的产品安全不良做法,特别是对于生产用于关键基础设施或国家关键功能 (NCF) 的软件的软件制造商而言。本指南还为软件制造商提供了减轻这些风险的建议。 CISA 和联邦调查局 (FBI)(以下称为编写组织)制定了本指南,旨在敦促软件制造商通过在整个产品生命周期中优先考虑安全性来降低客户风险。本文件适用于开发软件产品和服务的软件制造商,包括本地软件、云服务和软件即服务 (SaaS)。这也适用于在运营技术 (OT) 产品或嵌入式系统上运行的软件产品。编写组织强烈建议所有软件制造商避免这些产品安全不良做法。通过遵循本指南中的建议,制造商将向客户表明他们对客户安全结果负责,这是设计安全的关键原则。本文件中包含的指南不具约束力,虽然编写组织鼓励避免这些不良做法,但本文件并不要求这样做。 不良做法分为三类。
此列表具有针对性,并未涵盖所有可能不明智的网络安全做法。未包含任何特定的网络安全做法并不表示编写组织认可或认为此类做法具有可接受的风险水平。此列表中的项目是根据威胁形势选择的,代表软件制造商应避免的最危险和最紧迫的不良做法。 产品特性1)在可以使用现成的替代内存安全语言的情况下,使用内存不安全的语言(例如C或C ++)开发用于关键基础设施或NCF的新产品线是危险的,并大大增加了对国家安全,国家经济安全和国家公共健康和安全的风险。 对于使用内存不安全语言编写的现有产品,没有发布内存安全路线图是危险的,会大大增加国家安全、国家经济安全和国家公共卫生安全的风险。内存安全路线图应概述制造商消除使用内存不安全语言编写的优先代码组件中的内存安全漏洞的优先方法(例如面向网络的代码或处理加密操作等敏感功能的代码)。制造商应证明内存安全路线图将显著、优先减少制造商产品中的内存安全漏洞,并证明他们正在做出合理的努力遵循内存安全路线图。内存安全路线图的发布不适用于宣布支持终止日期在 2030 年 1 月 1 日之前的产品。 注意:编写组织明白,必须投入大量时间和资源才能迁移到内存安全语言。认识到这一点,我们鼓励软件制造商制定计划,既要在短期内缓解内存安全漏洞,又要在长期内消除这些漏洞。例如,一家公司可能首先用内存安全语言编写新的代码组件,同时实施硬件或编译器控制以缓解内存安全漏洞。随着时间的推移,该公司可以使用内存安全语言重写高风险组件(例如执行加密操作的组件)的部分内容,以逐步提高内存安全性。有关更多指导,请参阅内存安全路线图案例。 建议采取的措施:软件制造商应以系统性的方式构建产品,以防止引入内存安全漏洞。软件制造商应使用内存安全语言开发新的产品线。对于现有产品,软件制造商应在 2025 年底前发布内存安全路线图,概述其优先消除使用内存不安全语言编写的优先代码组件中的内存安全漏洞的方法。 CWE(常见弱点列举):CWE-119 资源: 内存安全路线图案例、CISA 安全设计承诺(减少漏洞等级)、回归构建模块、NIST 安全软件开发框架 (SSDF) PW 6.1。 2)在用于关键基础设施或NCF服务的产品中,将用户提供的输入直接包含在SQL数据库查询字符串的原始内容中是危险的,并会显著增加国家安全、国家经济安全和国家公共健康和安全的风险。 建议的措施:软件制造商应以系统地防止引入 SQL 注入漏洞的方式构建产品,例如通过一致强制使用参数化查询、准备好的语句,或一致使用自动生成参数化查询的对象关系映射 (ORM) 库。 中部风洞: CWE-89 资源: CISA 安全设计承诺(减少漏洞等级)、SSDF PW.5.1、CISA SQL 注入安全设计警报。 3)在用于关键基础设施或NCF服务的产品中,将用户提供的输入直接包含在操作系统命令字符串的原始内容中是危险的,并会显著增加国家安全、国家经济安全和国家公共健康和安全的风险。 建议采取的措施:软件制造商应以系统性的方式构建产品,以防止命令注入漏洞。示例方法包括始终确保命令输入与命令本身的内容明确区分;使用内置库函数(如果可用)而不是运行命令;以及使用仅允许字母数字字符和下划线的限制性允许列表来净化用户输入。 注意:本条款旨在涵盖应用程序可能容易受到命令注入漏洞攻击的情况,例如,如果用户在网站上的输入被操作系统命令调用。本条款不适用于软件故意允许用户执行命令的情况,例如向用户公开 shell 的终端程序。 中压炉: CWE-78 资源: CISA 安全设计警报:消除操作系统命令注入漏洞、CISA 安全设计承诺(减少漏洞类别)、SSDF PW.5.1。 4)发布使用默认密码来服务关键基础设施或 NCF 的产品是危险的,会显著增加对国家安全、国家经济安全和国家公共健康和安全的风险。CISA 将默认密码定义为整个产品中默认存在的通用密码,初始化时无需更改。 建议采取的措施:软件制造商应确保产品中不存在默认密码,例如:
CWE: CWE-1392 CWE-1393 资源: CISA 安全设计承诺(默认密码)、SSDF PW.9.1、CISA 默认密码安全设计警报。 5)如果发布用于关键基础设施或 NCF 的产品时,其组件中包含 CISA已知可利用漏洞 (KEV) 目录中存在的可利用漏洞,则该产品非常危险,会显著增加国家安全、国家经济安全和国家公共卫生安全的风险。[1] 此外,如果 CISA 的 KEV 目录中发布了影响产品的新 KEV,并且该产品中的 KEV 可被利用,则软件制造商应及时向用户免费发布补丁以解决该 KEV。如果产品中的 KEV 不可利用,则软件制造商应公开记录漏洞的存在。不采取此类措施非常危险,会显著增加国家安全、国家经济安全和国家公共卫生安全的风险。 建议措施:软件制造商应在发布软件组件之前修补所有已知的被利用的漏洞。如果 CISA 目录中发布了新的 KEV,制造商应及时向用户免费发布补丁(自包含 KEV 的组件的补丁发布之日起不超过 30 天),并明确警告用户不安装补丁的相关风险。 如果制造商认为其产品中的某个 KEV 无法被利用(例如,KEV 只能通过从未调用的函数来利用),则制造商应公开发布书面文件,承认该 KEV,并解释其产品中为何无法利用该 KEV。[2] 资源: CISA 安全设计承诺(安全补丁)、SSDF PW.4.4、具有约束力的操作指令 22-01。 6)发布用于关键基础设施或 NCF 的产品时,如果包含存在严重漏洞的开源软件组件,则该产品非常危险,会显著增加对国家安全、国家经济安全和国家公共健康和安全的风险。[3] 此外,如果随后在所包含的开源组件中披露了可利用的漏洞,而未能及时向产品用户免费发布补丁或其他缓解措施,则非常危险,会显著增加风险。 建议采取的措施:软件制造商应负责任地使用并持续为其依赖的开源软件做出贡献。这包括采取以下措施,合理评估和保护其开源软件依赖项:[4]
如果制造商认为其产品中的严重漏洞无法被利用(例如,因为该漏洞只能通过从未调用的函数来利用),则制造商应公开发布书面文件,承认该漏洞并解释其产品中为何无法利用该漏洞。 资源: SSDF PW.4.4、ESF 管理开源软件和软件物料清单的推荐做法、TODO 组开源计划办公室 (OSPO) 定义和指南 7)用于关键基础设施或NCF的信息技术产品,如果使用已知的不安全或弃用的加密算法,或者在传输或存储敏感信息时缺乏加密,则是危险的,会大大增加对国家安全、国家经济安全和国家公共健康和安全的风险。 建议措施:软件制造商应利用现代加密算法确保所有敏感数据在传输和静止时都受到保护。软件制造商应避免使用已知的不安全或已弃用的算法,例如传输层安全性 (TLS) 1.0/1.1、MD5、SHA-1 和数据加密标准 (DES)。此外,软件制造商应开始支持符合NIST 指导的标准化后量子加密算法。所有网站都应使用现代 TLS 加密。 资源: Let's Encrypt OWASP 传输层安全备忘单NIST 后量子密码学 8)在用于关键基础设施或NCF的产品的源代码中存在硬编码凭证或秘密是危险的,并会显著增加国家安全、国家经济安全和国家公共健康和安全的风险。 建议采取的措施:软件制造商应确保源代码中不存在机密,例如使用机密管理器,以便持续集成/持续部署 (CI/CD) 管道和应用程序可以安全地检索机密。此外,软件制造商应将扫描代码中是否存在机密或凭证的功能集成到其开发流程中。 资源: OWASP 硬编码密码 OWASP 机密管理 安全功能 9)用于关键基础设施或国家关键功能的信息技术(IT)产品,如果其基线版本不支持多因素身份验证(MFA),包括防网络钓鱼的MFA,则是危险的,会显著增加对国家安全、国家经济安全和国家公共健康和安全的风险。 此外,默认情况下未对管理员帐户启用 MFA 的 IT 产品非常危险,会显著增加国家安全、国家经济安全以及国家公共卫生和安全的风险。这不适用于宣布在 2028 年 1 月 1 日之前停止支持的产品。 对于使用 MFA 可能带来安全风险的 OT 产品(例如,急诊室的医疗设备,医生访问延迟可能导致患者受到伤害),制造商应采用身份验证措施,有效缓解单因素凭证滥用和其他身份验证威胁。制造商应发布详细说明此方法的威胁模型。 对于使用 MFA 可能安全的 OT 产品,例如供应商/维护帐户、远程可访问的用户和工程工作站以及远程可访问的 HMI,产品应该支持 MFA。 注意:其他防网络钓鱼的身份验证形式(例如密钥)即使是唯一的身份验证形式,也符合此定义。 建议采取的措施:对于除上述例外 OT 产品之外的所有产品,软件制造商应在产品中原生支持 MFA,包括防网络钓鱼 MFA(如果产品本身处理身份验证),或在产品的基线版本中支持使用外部身份提供者,例如通过基于标准的单点登录。软件制造商应要求管理员使用 MFA,并允许管理员要求其组织中的用户使用 MFA(如果适用)。 资源: CISA 安全设计承诺(多因素身份验证)、SSDF PW.9。 10)如果用于关键基础设施或NCF的产品没有向客户提供产品基线版本中当前和历史的工件和能力,以收集通常影响特定产品或产品所属产品类别的入侵类型的证据,这是很危险的,并且会显著增加国家安全、国家经济安全和国家公共健康和安全的风险,这些证据至少包括:
建议采取的措施:
资源: CISA 安全设计承诺(入侵证据)。 组织流程和政策11)如果关键基础设施或 NCF 所用产品的软件制造商未能及时发布至少所有影响重大或高影响漏洞的 CVE,则非常危险,并且会显著增加国家安全、国家经济安全以及国家公共卫生和安全的风险。[5](无论是内部发现还是第三方发现)会影响此类产品。此外,如果未在每个 CVE 记录中包含 CWE 字段,则非常危险,并且会显著增加国家安全、国家经济安全以及国家公共卫生和安全的风险。 建议行动:软件制造商应及时发布所有严重或高影响漏洞的完整 CVE,包括适当的 CWE 字段。 资源: CISA 安全设计承诺(CVE)、SSDF RV.1.3。 12)没有发布将产品纳入其范围的漏洞披露政策 (VDP) 是危险的,并会显著增加国家安全、国家经济安全以及国家公共健康和安全的风险。 建议采取的措施:
资源: CISA 安全设计承诺(漏洞披露政策)、SSDF RV.1.3、ISO 29147。 13)对于本地产品,如果软件制造商没有明确传达产品的支持期限,这是很危险的,并会显著增加国家安全、国家经济安全和国家公共健康和安全的风险。 建议措施:软件制造商应在销售时明确告知其产品的支持期限。软件制造商应在整个支持期内提供安全更新。 [1] 对于在产品计划发布前 30 天内发布的 KEV,制造商应在包含 KEV 的组件的补丁发布之日起 30 天内发布补丁。 [2] 理想情况下,文档应通过漏洞利用可交换 (VEX) 以机器可处理的格式发布。 [3] 严重漏洞是指通用漏洞评分系统 (CVSS) 评分为 9.0 或更高的漏洞。 [4] 组织可以选择建立一个开源计划办公室 (OSPO) 来集中管理这些活动。 [5] 严重漏洞定义为 CVSS 评分为 9.0 或更高的漏洞。 高影响漏洞定义为 CVSS 评分为 7.0 或更高的漏洞。 |