近日,美国网络安全和基础设施安全局发布《产品安全不良实践》,指南概述了被认为风险极高的产品安全陋习,尤其是对于生产用于关键基础设施或国家关键功能(NCF) 的软件的软件制造商而言。本指南还为软件制造商提供了降低相关风险的建议。
CISA 和联邦调查局 (FBI)(以下简称编写机构)共同编写了本指南,旨在敦促软件制造商在整个产品生命周期中优先考虑安全问题,从而降低客户风险。本文档适用于开发软件产品和服务(包括内部部署软件、云服务和软件即服务(SaaS))的软件制造商。这也适用于在操作技术(OT)产品或嵌入式系统上运行的软件产品。编写组织强烈建议所有软件制造商避免这些产品安全陋习。通过遵循本指南中的建议,制造商将向客户表明,他们正在对客户的安全结果负责,这是设计安全的关键原则。本文档中包含的指导不具有约束力,尽管编写组织鼓励避免这些不良行为,但本文档并不强制要求这样做。
不良实践分为三类
1.产品属性:描述软件产品可观察到的、与安全相关的质量。
2.安全特性:描述产品支持的安全功能。
3.组织流程和政策,描述软件制造商为确保其安全方法的高透明度而采取的行动。
本清单重点突出,并不包括所有可能的不可取网络安全做法。未包含任何特定的网络安全实践并不表示编写组织认可或认为该实践具有可接受的风险水平。本列表中的项目是根据威胁情况选择的,代表了软件制造商应避免的最危险、最紧迫的不良做法。
产品特性
1) 使用内存不安全语言(如C 或C++)开发服务于关键基础设施或国家控制框架的新产品线是危险的,会大大增加国家安全、国家经济安全和国家公共卫生与安全的风险。
对于用内存不安全语言编写的现有产品来说,没有已发布的内存安全路线图是危险的,会大大增加对国家安全、国家经济安全和国家公共卫生与安全的风险。内存安全路线图应概述制造商为消除用内存不安全语言编写的优先代码组件(如面向网络的代码或处理密码操作等敏感功能的代码)中的内存安全漏洞而采取的优先方法。制造商应证明内存安全路线图将显著减少制造商产品中的内存安全漏洞,并证明他们正在合理地努力遵循内存安全路线图。内存安全路线图的发布不适用于宣布支持终止日期在2030 年1 月1 日之前的产品。
注:编写组织知道,迁移到内存安全语言必须投入大量的时间和资源。有鉴于此,鼓励软件制造商制定计划,既要在短期内减少内存安全漏洞,又要在长期内消除内存安全漏洞。例如,公司可以先用内存安全语言编写新的代码组件,同时实施硬件或编译器控制,以减少内存安全漏洞。随着时间的推移,公司可以使用内存安全语言重写高风险组件的部分内容(如执行加密操作的组件),从而逐步提高内存安全性。有关更多指导,请参阅《内存安全路线图案例》。
建议采取的行动:软件制造商在构建产品时,应系统地防止引入内存安全漏洞。软件制造商应使用内存安全语言开发新的产品线。对于现有产品,软件制造商应在2025 年底前发布内存安全路线图,概述其消除内存不安全语言编写的优先代码组件中内存安全漏洞的优先方法。
CWE(通用缺陷枚举):CWE-119
资源:《内存安全路线图案例》、《CISA安全设计承诺(减少漏洞类别)》、《回到构件》、《NIST安全软件开发框架(SSDF) PW 6.1》。
2)在关键基础设施或NCF 服务产品中的SQL数据库查询字符串原始内容中直接包含用户提供的输入是危险的,会大大增加国家安全、国家经济安全和国家公共卫生与安全的风险。
建议采取的行动:软件制造商在构建产品时,应系统地防止引入 SQL注入漏洞,例如,持续强制使用参数化查询、准备语句或持续使用自动生成参数化查询的对象关系映射(ORM) 库。
CWE:CWE-89
资源: CISA安全设计承诺(减少漏洞类别)、SSDF PW.5.1、CISA SQL 注入安全设计警报。
3)在为关键基础设施或国家控制框架服务的产品中,将用户提供的输入直接纳入操 作系统命令字符串的原始内容是危险的,会大大增加对国家安全、国家经济安 全和国家公共卫生与安全的风险。
建议采取的行动:软件制造商在构建产品时,应系统地防止出现命令注入漏洞。举例说明的方法包括:始终确保命令输入与命令本身的内容明确区分开来;在可用的情况下,使用内置库函数而不是运行命令;使用限制性的允许列表,只允许字母数字字符和下划线对用户输入进行消毒。
注:本章旨在涵盖应用程序可能存在命令注入漏洞的情况,如用户在网站上的输入被调用到操作系统命令中。这不适用于软件故意允许用户执行命令的情况,如向用户暴露shell 的终端程序。
CWE:CWE-78
资源:CISA 安全设计警报:消除操作系统命令注入漏洞、CISA安全设计承诺(减少漏洞类别)、SSDF PW.5.1。
4)发布带有默认密码(CISA 将其定义为整个产品默认存在且初始化时无需更改的通用共享密 码)的用于关键基础设施或国家控制框架服务的产品是危险的,会大大增加国家安 全、国家经济安全和国家公共健康与安全的风险。
建议采取的行动:软件制造商应确保产品中不存在默认密码,例如:
为产品提供随机的、实例唯一的初始密码。
要求安装产品的用户在安装过程开始时创建一个强密码。
提供有时间限制的设置密码,在设置过程完成后自动失效,并要求配置安全密码(或更安全的身份验证方法,如防网络钓鱼的 MFA)。
要求对初始设置进行物理访问并指定实例唯一凭证。
开展活动或提供更新,将现有部署从默认密码过渡到更安全的身份验证机制。
CWE:CWE-1392 和CWE-1393
资源:CISA设计安全承诺(默认密码),SSDF PW.9.1,CISA默认密码设计安全警报。
5) 用于服务关键基础设施或国家信息基础设施的产品,如果在发布时其组件包含CISA已知漏洞(KEV)目录中的可利用漏洞,则该产品的发布是危险的,会大大增加对国 家安全、国家经济安全和国家公共健康与安全的风险。 此外,如果 CISA 的KEV 目录中公布了影响产品的新KEV,且该KEV 可在产品中被利用,则软件制造商应及时向用户免费发布补丁,以解决KEV 问题。如果KEV在产品中不可利用,软件制造商应公开记录该漏洞的存在。不采取这些行动是危险的,会大大增加对国家安全、国家经济安全和国家公众健康与安全的风险。
建议采取的行动:软件制造商应在软件发布前修补软件组件中所有已知的漏洞。如果CISA 的目录中公布了新的KEV,制造商应及时向用户免费发布补丁(自包含KEV 的组件补丁发布之日起不超过30 天),并明确警告用户不安装补丁的相关风险。
如果制造商认为在其产品中无法利用KEV(例如,KEV只能通过一个从未被调用的函数被利用),制造商应公开发布书面文档,承认KEV 并解释如何在其产品中无法利用该KEV。
资源:CISA Secure by Design Pledge(安全补丁)、SSDF PW.4.4、Binding Operational Directive 22-01。
6)用于关键基础设施或国家控制框架服务的产品,如果在发布时包含有关键漏洞的开放源代码软件组件,则该产品的发布是危险的,会大大增加对国家安全、国家经济安全和国家公共健康与安全的风险。此外,如果所包含的开放源代码组件中可被利用的漏洞随后被披露,则未能及时向产品用户免费发布补丁或其他缓解措施,则该产品的发布是危险的,会大大增加风险。
建议采取的行动:软件制造商应负责任地使用和持续贡献其所依赖的开源软件。这包括通过采取以下行动,合理地评估和保护其依赖的开源软件:
以行业标准、机器可读的格式维护软件物料清单 (SBOM),描述所有第一和第三方软件依赖关系,包括开源和专有软件,并将其提供给客户。
拥有管理开放源码软件的既定流程,包括采取合理措施:
在选定的每个开源软件组件上运行安全扫描工具,包括其依赖关系和传递依赖关系,以及更新后的每个后续版本。
选择维护良好的开源软件项目,并在适当的情况下为项目的持续维护做出贡献,以保持预期的质量标准。
评估替代方案,确定并选择安全性和维护性最高的方案。
从符合安全最佳实践的软件包资源库(或其他适当来源)下载开源软件项目工件。
例行监控所有开源软件依赖项中的CVE或其他与安全相关的警报,如寿命终止,并在必要时进行更新。
在制造商自己的构建系统中缓存所有开源依赖项的副本,不直接从未经验证的公共来源更新产品或客户系统。
在业务规划活动中纳入第三方开源软件依赖项更新到新的主要版本的成本,并确保这些依赖项在预期的产品生命周期内继续获得必要的安全修复。
如果制造商认为在其产品中无法利用关键漏洞(例如,漏洞只能通过一个从未被调用的函数来利用),制造商应公开发布书面文档,承认该漏洞并解释如何在其产品中无法利用该漏洞。
资源:SSDF PW.4.4,ESF管理开放源码软件和软件物料清单的建议做法,TODO集团开放源码计划办公室(OSPO) 定义和指南
7) 服务于关键基础设施或国家控制框架的信息技术产品,如果使用已知的不安全或已废弃的加密算法,或在传输或存储敏感信息时缺乏加密,则会造成危险,并极大地增加对国家安全、国家经济安全和国家公共健康与安全的风险。
建议采取的行动:软件制造商应使用现代加密算法,确保所有敏感数据在传输和静态时都受到保护。软件制造商应避免使用已知的不安全或废弃算法,如传输层安全(TLS) 1.0/1.1、MD5、SHA-1和数据加密标准(DES)。此外,软件制造商应开始支持符合NIST 指南的标准化后量子加密算法。所有网站都应使用现代TLS 加密。
资源:Let"s Encrypt、OWASP传输层安全手册、NIST后量子加密算法
8) 关键基础设施或国家控制框架所用产品的源代码中存在硬编码凭证或机密是危险的,会大大增加对国家安全、国家经济安全以及国家公共健康和安全的风险。
建议采取的行动:软件制造商应确保源代码中不存在机密,例如使用机密管理器,让持续集成/持续部署(CI/CD)管道和应用程序可以用来安全地检索机密。此外,软件制造商应将扫描代码中是否存在秘密或凭证纳入其开发流程。
资源:OWASP 硬编码密码、OWASP秘密管理
安全功能
9) 对于服务于关键基础设施或国家关键功能的信息技术(IT) 产品,如果在产品的基线版本中不支持多因素身份验证(MFA),包括防网络钓鱼的MFA,那么这些产品是危险的,会大大增加对国家安全、国家经济安全以及国家公共健康和安全的风险。
此外,默认情况下不对管理员账户启用MFA 的IT产品也是危险的,会大大增加对国家安全、国家经济安全以及国家公共健康和安全的风险。这不适用于宣布支持终止日期在2028 年1 月1 日之前的产品。
对于使用MFA 可能会带来安全风险的OT产品(例如,急诊室的医疗设备,医生的访问延迟可能会导致病人受到伤害),制造商应采用能有效减轻单因素凭证滥用威胁和其他身份验证威胁的身份验证措施。制造商应公布详细说明这种方法的威胁模型。
对于可以安全使用MFA 的OT产品,如供应商/维护账户、远程访问的用户和工程工作站以及远程访问的人机界面,产品应支持MFA。
注:其他防网络钓鱼的身份验证形式(如密码钥匙)即使是唯一的身份验证形式,也符合此定义。
建议采取的措施:对于除上述 OT产品外的所有产品,软件制造商应在产品中本地支持MFA,包括防网络钓鱼MFA(如果产品本身处理身份验证),或在产品的基线版本中支持使用外部身份提供程序,如通过基于标准的单点登录。软件制造商应要求管理员使用MFA,并允许管理员要求其组织内的用户使用MFA(如适用)。
资源:CISA 设计安全承诺(多因素身份验证),SSDF PW.9。
10) 对于用于关键基础设施或国家控制框架的产品而言,不向客户提供产品基线版本中的当前和历史人工制品和功能,不足以收集通常影响特定产品或产品所属类别的入侵类型的证据,是危险的,会大大增加对国家安全、国家经济安全和国家公众健康与安全的风险,这些入侵类型至少包括:
配置更改或读取配置设置;
身份(如登录和令牌创建)和网络流(如适用);以及
数据访问或创建业务相关数据。
建议采取的行动:
作为产品基线版本的一部分,软件制造商应以行业标准、机器可读格式向客户提供至少与上述所列领域相关的日志。
对于云服务提供商和SaaS 产品,软件制造商应在规定时间内(至少6 个月)免费保留此类日志,并向客户提供这些日志。
资源:CISA 设计安全承诺(入侵证据)。
组织流程和政策
11) 用于服务关键基础设施或NCF 的产品的软件制造商不及时发布CVE(至少针对 所有关键或高影响漏洞)是危险的,会大大增加对国家安全、国家经济安全和国 家公众健康与安全的风险。(无论是内部发现还是由第三方发现)影响此类产品。此外,不在每个CVE 记录中包含CWE字段是危险的,会大大增加对国家安全、国家经济安全和国家公众健康与安全的风险。
建议采取的行动:软件制造商应及时公布所有关键或高影响漏洞的完整CVE,包括适当的CWE 字段。
资源:CISA 设计安全承诺(CVE)、SSDF RV.1.3。
12) 不发布将产品纳入其范围的漏洞披露政策(VDP)是危险的,会大大增加国家安全、国家经济安全和国家公共健康与安全的风险。
建议采取的行动:
软件制造商应发布符合以下要求的 VDP。
授权公众对制造商提供的产品进行测试;
承诺不建议或追究任何善意遵守 VDP 的人的法律责任;
提供报告漏洞的明确渠道;以及
允许按照协调漏洞披露 (CVD) 最佳实践和国际标准公开披露漏洞。
软件制造商应及时并按风险优先级修复所有有效报告的漏洞。
资源:CISA 设计安全承诺(漏洞披露政策)、SSDF RV.1.3、ISO 29147。
13) 对于企业内部产品,软件制造商不明确告知产品支持期限是危险的,会大大增加对国家安全、国家经济安全和国家公众健康与安全的风险。
建议采取的行动:软件制造商应在产品销售时明确告知产品的支持期限。软件制造商应在整个支持期内提供安全更新。
声明:本文来自天极智库,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。