NIST SP 800-218 安全软件开发框架 (SSDF) 1.1 版:降低软件漏洞风险的建议 鹰眼翻译社区
樊山
1 NIST 特别出版物 800-218
安全软件开发框架 (SSDF) 1.1 版:降
低软件漏洞风险的建议
Murugiah Souppaya
计算机安全部信息技术实验室
凯伦·斯卡芬
Scarfone 网络安全 弗吉尼亚州克利夫顿
唐娜·多德森 *
* 前 NIST 员工; 本出版物的所有工作都是在 NIST 期间完成的。
本出版物可从以下网址免费获得: https://doi.org/10.6028/NIST.SP.800 -218
翻译:樊山 (鹰眼翻译社区)
2022 年 2 月 NIST SP 800-218 安全软件开发框架 (SSDF) 1.1 版:降低软件漏洞风险的建议 鹰眼翻译社区
樊山
2 执行摘要
本文档描述了一组用于安全软件开发的基本、可靠的实践,称为安全软件开
发框架 (SSDF)。组织应在其现有软件开发实践中集成 SSDF,使用 SSDF 约定向
第三方供应商表达其安全软件开发要求,并获取符合 SSDF 中描述的实践的软
件。使用 SSDF 可帮助组织满足以下安全软件开发建议:
⚫ 组织应确保其人员、流程和技术准备好执行安全的软件开发。
⚫ 组织应保护其软件的所有组件免遭篡改和未经授权的访问。
⚫ 组织应生产安全可靠的软件,其版本中的安全漏洞最少。
⚫ 组织应识别其软件版本中的剩余漏洞并做出适当响应以解决这些漏洞
并防止将来发生类似的漏洞。
SSDF 没有规定如何实施每种做法。重点是实践的 结果,而不是这样做的工
具、技术和机制。这意味着 SSDF 可以被任何部门或社区的组织使用,无论其规
模或网络安全复杂程度如何。它还可以用于任何类型的软件开发,无论技术、平
台、编程语言或操作环境如何。
SSDF 仅定义了组织可能需要做的高级子集,因此组织应查阅参考资料和其
他资源以获取有关实施实践的更多信息。并非所有实践都适用于所有用例;组织
应采用基于风险的方法来确定哪些实践是相关的、适当的和有效的,以减轻对其
软件开发实践的威胁。
组织可以通过参考附录 A 中描述的 SSDF 实践和任务来传达他们如何处理
总统行政 命令 (EO) 第 4 节“改善国家网络安全 (14028)” 中的条款。
NIST SP 800-218 安全软件开发框架 (SSDF) 1.1 版:降低软件漏洞风险的建议 鹰眼翻译社区
樊山 3 1 简介
软件开发生命周期 (SDLC)1 是一种用于设计、创建和维护软件(包括内置
于硬件中的代码)的正式或非正式方法。 SDLC 有许多模型,包括瀑布模型、螺
旋模型、敏捷模型,尤其是与软件开发和 IT 运营 (DevOps) 实践相结合的敏捷
模型。很少有 SDLC 模型明确详细地解决软件安全问题,因此通常需要将安全软
件开发实践添加并集成到每个 SDLC 模型中。无论使用哪种 SDLC 模型,都应将
安全软件开发实践集成到其中,原 因有三个:减少已发布软件中的漏洞数量,减
少利用未检测到或未解决的漏洞的潜在影响, 以及解决根 本问题防止漏洞再次发
生的原因。漏洞不仅包括由编码缺陷引起的错误,还包括由安全配置设置、不正
确的信任假设和过时的风险分析引起的弱点。 [IR7864]
安全性的大多数方面可以在 SDLC中更好的解决,但一般来说,在 SDLC中解
决安全性的时间越早,最终实现相同级别的安全性所需的工作量和成本就越少。
无论 SDLC 模型如何,这个被称为左移的原则至关重要。左移可以最大限度地减
少任何需要在开发后期或软件投入生产后修复早期安全漏洞的 技术债务。 左移还
可以使软件具有更强的安全性和弹性。
有许多关于安全软件开发实践的现有文档, 包括参考资料部分中列出的文档。
本文件不介绍新的做法或定义新的术语。相反,它描述了一组基于既定标准、指
南和安全软件开发实践文档的高级实践。这些实践统称为安全软件开发框架
(SSDF), 旨在帮助目标受众实现安全软件开发目标。 许多实践直接涉及软件本身,
而其他实践则间接涉及它(例如,保护开发环境) 。
未来的工作可能会在本出版物上扩展,并可能涵盖诸如 SSDF 如何适用于
特定软件开发方法和相关实践(如 DevOps)以及如何从其当前的软件开发实践
过渡到也纳入 SSDF 实践等主题,以及如何在开源软件环境中应用 SSDF。未来
的工作可能会采用用例的形式, 以便这些见解更容易适用于特定类型的开发环境,
并且可能包括与开源社区和其他团体和组织的合作。
本文档确定了安全软件开发实践,但没有规定如何实施它们。重点是要实施
1 请注意, SDLC还广泛用于 “系统开发生命周期 ”本文件中 “SDLC”的所有用法均指软件,而非系统。 NIST SP 800-218 安全软件开发框架 (SSDF) 1.1 版:降低软件漏洞风险的建议 鹰眼翻译社区
樊山 4 的实践的结果,而不是用于这样做的工具、技术和机制。在高级别指定实践的优
点包括:
⚫ 可供任何部门或社区的组织使用,无论其规模或网络安全复杂程度如何
⚫ 可应用于为支持信息技术 (IT)、工业控制系统 (ICS)、网络物理系统
(CPS) 或物联网 (IoT) 而开发的软件
⚫ 可以集成到任何现有的软件开发工作流程和自动化工具链中;不应对已
经拥有强大的安全软件开发实践的组织产生负面影响
⚫ 使实践广泛适用,而不是特定于特定技术、平台、编程语言、 SDLC 模
型、开发环境、操作环境、工具等。
⚫ 可以帮助组织记录其当前的安全软件开发 实践,并将其未来的目标实践
定义为持续改进过程的一部分
⚫ 可以帮助当前使用经典软件开发模型的组织将其安全软件开发实践转
变为与现代软件开发模型(例如敏捷、 DevOps)一起使用
⚫ 可以帮助采购和使用软件的组织了解供应商采用的安全软件开发实践
本文档提供了一种通用语言来描述基本的安全软件开发实践。 这与改进关键
基础设施网络安全框架(也称为 NIST 网络安全框架 [NISTCSF] )所采用的方法
类似。2 了解这些实践并不需要安全软件开发方面的专业知识。通用语言有助于
促进内部和外部组织利益相关者之间关于安全软件实践的沟 通,例如:
⚫ 企业所有者、软件开发人员、项目经理和主管、网络安全专业人员以及
组织内的运营和平台工程师,他们需要就安全软件开发进行清晰的沟通
⚫ 软件采购方,包括联邦机构和其他组织,他们希望在其采购过程中定义
软件所需或期望的特性,以便拥有更高质量的软件(尤其是具有较少重
大安全漏洞的软件)3
2 SSDF实践可能有助于支持 NIST网络安全框架的功能、类别和子类别,但 SSDF实践并不符合这些功
能、类别和子类别,通常由不同各方负责。开发人员可以采用 SSDF实践,他们的工作成果可以帮助组织
实现运营安全,以支持网络安全框架。
3 未来的工作可能会为软件收购方在特定用例中如何利用 SSDF提供更实用的指导。 NIST SP 800-218 安全软件开发框架 (SSDF) 1.1 版:降低软件漏洞风险的建议 鹰眼翻译社区
樊山 5 ⚫ 想要集成安全软件的软件生产商 (例如, 商业现货 [COTS] 产品供应商、
政府现货 [GOTS] 软件开发商、在软件收购组织内部或代表软件收购组
织工作的软件开发商)整个 SDLC 的开发实践,向客户表达他们的安全
软件实践,或为他 们的供应商定义要求
本文档的实践并非基于所有组织都具有相同的安全目标和优先级的假设。 相
反,这些建议反映了每个软件生产者可能有独特的安全假设,每个软件购买者可
能有独特的安全需求和要求。 虽然目标是让每个软件生产者遵循所有适用的实践,
但期望每个实践的实施程度和实施的形式将根据生产者的安全假设而有所不同。
这些实践为实施者提供了灵活性,但它们也清楚地避免了过多的解释。
尽管这些实践中的大多数都与任何软件开发工作相关, 但有些则不然。 例如,
如果开发特定软件不涉及使用编译器, 则无需遵循配置编译器以提高可执行安全
性的做法。一 些实践是基础性的,而另一些则更先进,依赖于已经存在的某些基
础性实践。此外,实践并非对所有情况都同等重要。
在决定使用哪些实践以及为每种实践投入多少时间和资源时,应考虑风险、
成本、可行性和适用性等因素。4自动化也是一个需要考虑的重要因素,尤其是在
大规模实施实践时。实践、任务和实施示例代表了一个需要考虑的起点;它们旨
在进行更改和定制, 并且没有优先级。 任何规定的 测试频率都是名义上的。 SSDF
的目的不是创建要遵循的清单, 而是为规划和实施基于风险的方法以采用安全软
件开发实践提供基础。
根据软件和服务的交付 (例如 , 基础设施即服务、 软件即服务、 平台即服务、
容器即服务、无服务器) ,实施实践的责任可能会分布在不同的组织中。 在这些
情况下, 它可能遵循涉及平台 /服务提供商和使用这些平台 /服务的租户组织的共
同责任模型。 承租人组织应与供应商建立协议,指定哪一方负责每项实践和任
务,以及每个供应商将如何证明他们与协议的符合性。
4 寻求如何开始安全软件开发指导的组织可以参考许多公开的参考资料,例如 SAFECode 的Steve Lipne
NIST 特别出版物 800 安全软件开发框架 (SSDF) 1.1 版:降低软件漏洞风险的建议o
文档预览
中文文档
75 页
50 下载
1000 浏览
0 评论
0 收藏
3.0分
温馨提示:本文档共75页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 思安 于 2022-12-05 09:21:10上传分享