安全软件开发框架SSDF是由美国国家标准与技术研究院发布的关于安全软件开发的一组实践,帮助开发组织减少发布的软件中的漏洞数量,减少利用未检测到或未解决的漏洞的潜在影响,从根本上解决漏洞防止再次发生。本文根据《Secure Software Development Framework (SSDF) Version 1.1:Recommendations for Mitigating the Risk of Software Vulnerabilities》文档翻译整理,本文是第三部分,主要是该框架的安全实践列表以及相应的参考中的保护软件(Protect Software)部分。
实践1(保护软件) | 任务 | 概念实现参考示例 | 参考 |
保护所有形式的代码免受未经授权的访问和篡改(PS.1):
有助于防止对代码的未经授权更改(无论是无意还是有意)。未经授权的访问和篡改可能会导致违背软件预期安全特性的事情发生。对于不打算公开访问的代码,这有助于防止软件被盗,增加攻击者发现软件中漏洞的难度和耗时。 | PS.1.1:基于最低权限原则存储所有形式的代码(包括源代码、可执行代码和配置为代码),以便只有授权人员、工具、服务等才能访问。 | 示例1:将所有源代码和配置代码存储在代码库中,并根据代码的性质限制对它的访问。例如,用于公共访问的开源代码可能需要保护其完整性和可用性;其他代码也可能需要保密保护。
示例2:使用存储库的版本控制功能来跟踪对代码所做的所有更改,并对单个帐户负责。
示例3:对代码库使用提交签名。
示例4:让代码所有者审查和批准其他人对代码所做的所有更改。
示例5:使用代码签名帮助保护可执行文件的完整性。
示例6:使用加密(例如,哈希密码)来帮助保护文件完整性。 | 不一一展示,需要原文件可私信我获取 |
实践2(保护软件) | 任务 | 概念实现参考示例 | 参考 |
提供验证软件发布完整性的机制(PS.2):
帮助软件购买者确保他们购买的软件是合法的,没有被篡改。 | PS.2.1:向软件购买者提供软件完整性验证信息。 | 示例1:在安全良好的网站上发布发布文件的哈希密码。
示例2:使用成熟证书颁发机构进行代码签名,以便消费者的操作系统或其他工具和服务可以在使用前确认签名的有效性。
示例3:定期检查代码签名过程,包括证书更新、轮换、吊销和保护。 | 不一一展示,需要原文件可私信我获取 |
实践3(保护软件) | 任务 | 概念实现参考示例 | 参考 |
归档和保护每个软件版本(PS.3):
保留软件版本,以帮助识别、分析和消除发布后软件中发现的漏洞。 | PS.3.1:安全地归档每个软件版本所需的文件和支持数据(如完整性验证信息、来源数据)。 | 示例1:按照组织的既定策略将发布文件、相关图像等存储在存储库中。只允许必要人员对其进行只读访问,其他人不得访问。
示例2:存储Protect Release完整性验证信息和来源数据,例如将其保存在与发布文件分开的位置或对数据进行签名。 | 不一一展示,需要原文件可私信我获取 |
PS.3.2:收集、保护、维护和共享每个软件版本的所有组件的来源数据(例如,在软件材料清单[SBOM]中)。 | 示例1:根据组织的政策,最好使用基于标准的格式,向软件收购方提供来源数据。
示例2:向组织的运营和响应团队提供来源数据,以帮助他们减少软件漏洞。
示例3:保护源数据的完整性,并为接收者提供验证源数据完整性的方法。
示例4:每次更新软件的任何组件时都更新源数据。 |
以上是安全软件开发框架(SSDF)1.1版本中的软件保护部分的全部内容,后面会继续为大家整理可靠软件生产部分和漏洞响应部分,欢迎大家继续关注。