政府为开发人员发布指导以确保软件供应链安全

简介: 政府为开发人员发布指导以确保软件供应链安全

640.png


正如云原生计算基金会 (CNCF)的供应链危害目录中所引用的那样,软件供应链攻击正在上升。Google、Linux 基金会、OpenSSF 等行业领导者和 NIST 等公共部门组织在过去一年左右就该主题提供了指导。

美国国家安全局 (NSA) 与网络安全和基础设施安全局 (CISA) 以及国家情报局局长办公室 (ODNI) 现在通过他们的出版物《保护软件供应链:开发人员推荐实践指南》加入了该名单。

该出版物的公告强调了开发人员在创建安全软件中所扮演的角色,并指出该指南致力于帮助开发人员采纳政府和行业的建议。持久安全框架 (ESF) 的后续版本将侧重于供应商和软件消费者,因为它们各自在更广泛的软件供应链及其弹性中发挥着独特的作用。

在高层次上,该文档分为三个部分:

  • 第 1 部分:软件开发人员的安全指南
  • 第 2 部分:软件供应商注意事项
  • 第 3 部分:软件客户推荐

开发人员、软件供应商和客户的角色

该指南指出了开发人员、供应商和客户在更广泛的软件供应链生态系统中扮演的独特角色。

640.png

软件供应链集团的关系和活动


软件供应商及其开发团队最终可能会在上市速度与安全且有弹性的软件或支持软件的产品之间陷入两难境地。

如上图所示,这三个角色中的每一个都有其可以并且应该执行的安全活动。这些活动涵盖了从最初的安全软件开发、组合和架构一直到客户端的安全验收测试和完整性验证的各个方面。

安全软件从安全软件开发生命周期 (SDLC) 开始,该指南引用了许多团队可以使用的选项,例如美国国家标准与技术研究院 (NIST) 的安全软件开发框架 (SSDF )、卡内基梅隆大学的安全软件开发生命周期Processes和其他课程,例如最近宣布的 OpenSSF安全软件开发基础课程。

640.png


安全的软件开发过程

如何开发安全软件


该指南强调不仅要使用安全的软件开发流程,还要制作用于验证的有形工件和证明,软件生产者和消费者都可以保证与软件的安全性和弹性相关。


这些流程和活动包括最佳实践,例如威胁建模、SAST、DAST和渗透测试,还包括使用安全发布活动,例如数字签名,一个显着的例子是Sigstore的增加采用,它是签名、验证和保护软件的标准。


OpenSSF 的开源安全动员计划也提到了 Sigstore 的采用和使用作为增强对软件供应链信任的一种方法。


胁建模得到了重要的提及,认识到在产品开发和交付期间,团队应该检查可能发生的潜在威胁场景以及可以采取哪些控制措施来缓解它们。


团队还应该建立安全测试计划和相关的发布准备标准,以确保不可接受的漏洞不会进入生产环境或接触客户。


成熟的产品团队也建立了支持和漏洞处理策略。这包括拥有一个可以提交产品漏洞的系统,以及一个能够在事件发生时做出响应并参与其中的相关事件响应团队。


鉴于开发人员对生产安全或不安全产品的影响,必须进行正式的评估和培训。确定需要哪些培训以及需要谁以指定的频率进行培训。


OpenSSF 的开源软件安全动员计划将提高安全软件开发技能的开发人员列为一个关键目标,该目标被认为是全行业的必要条件。培训主题包括安全软件开发、代码审查、验证测试以及在开发过程中使用漏洞评估工具来降低漏洞,使其成为最终产品。


上面讨论的活动和实践,例如安全开发培训、威胁建模、安全测试计划和开发的安全策略和程序,映射到前面提到的 NIST SSDF 中的活动,这将很快成为软件供应商自我证明的要求,向美国联邦政府销售软件产品时。


安全代码开发有很多方面,包括选择可以从一开始就减轻漏洞的编程语言。组织还需要解决内部威胁,这些威胁可能是受感染的工程师或只是训练有素的工程师。组织可以通过编码源代码控制流程和适当的身份验证、对代码运行静态和动态测试以及寻找暴露的秘密来减轻这些威胁。


组织还应实施夜间构建和安全回归测试,以识别和解决缺陷和漏洞。开发工作不应该是临时性的,应该通过相关的安全测试映射到特定的系统要求,以避免可能引入风险的功能蔓延。


应优先考虑代码审查,尤其是关键代码,以确保密码学等基础知识到位,并要求对资源进行权限升级和访问保护。不仅要保护代码,还要保护开发环境。


有一些值得注意的事件,例如 SolarWinds,其中开发环境可能受到损害并毒害下游消费者,因此开发人员端点、源代码存储库和 CI/CD 管道等系统应该进行威胁建模并进行漏洞评估。


开源软件 (OSS) 引入了其自身独特的风险,该指南建议使用专用系统下载、扫描和定期检查内部开发团队可以使用的 OSS 组件。NIST 在其第 4 节的改进国家网络安全行政命令指南中也提倡这一概念,并被称为连续包装。


强调的另一种做法是保护开发人员环境,使用安全的开发构建配置和安全的第三方软件工具链和库。


开发系统应该被强化并且只用于开发目的,不能访问互联网,并且只能使用预先批准的工具和软件。


该指南建议根据 NIST国家漏洞数据库 (NVD)审查CVE的第三方模块。工具和自动化可以帮助促进这一过程,甚至可以作为集成开发环境 (IDE) 的一部分使用安全依赖分析器和类似工具来识别漏洞。


强化构建环境至关重要,包括开发者网络、企业网络和内部构建环境。这减轻了来自互联网和外部恶意行为者的威胁以及完整性和验证措施,以验证没有发生破坏产品的恶意活动。

640.png


安全的构建环境


软件组件应来自已知的可信赖供应商,这些供应商应满足组织要求,并通过SPDX 或 CycloneDX SBOM 格式等方法以及供应商对漏洞的响应能力以及已建立的漏洞报告方法进行验证。


保护软件供应链的指导不仅仅是强化构建环境,还提出了使用密封可重现构建等建议。这意味着完全声明的构建步骤、不可变的引用和无网络访问,以及相同的输出和工件,无论变量元数据更改如时间戳。


软件应安全交付,包括最终组成的 SBOM 给客户。作为包验证的一部分,客户可以使用二进制分析输出来确保只有预期的软件组件到位。为了解决软件包和更新的妥协,产品和组件都可以使用散列和数字签名来进行产品分发、组件和升级。


组织还应采取措施减轻对分配系统本身的危害。这可以包括将安全措施应用于存储库和包管理器以及使用安全传输层机制。


用于保护软件供应链的其他资源

该指南包括与开发人员、供应商和客户的各种场景之间的人行横道,以实现 SSDF 中概述的特定实践。它还包括供应商、第三方供应商和最终客户之间存在的依赖关系和工件的映射。


与 SLSA (软件工件的供应链级别)框架的映射显示了指南中的具体建议如何映射到 SLSA 的各个级别,从 L1 到 L4。

640.png

640.png



最后,有一个完整的工件列表和清单将在整个 SDLC 中使用,还有一个信息参考列表,如网络行政命令、DoD 和 NIST 文档以及行业组织(如 OWASP)。


这种安全的软件供应链指南是一个关键资源,无疑将被业界用作希望为软件生产商和消费者加强其软件供应链实践的组织的首选参考。


由于本文档以开发人员为中心,因此建议行业寻找后续指南,该指南将重点关注软件供应商和消费者。


相关资源:


保护软件供应链:开发人员推荐实践指南


软件物料清单的最低要素


https://kaishi.lanzouv.com/b04p0uxng 密码: 0917


SLSA • 软件工件的供应链级别


保护任何软件供应链中的工件完整性


https://slsa.dev/

640.png


供应链威胁


GitHub 咨询数据库


包含 CVE 和 GitHub 的安全漏洞数据库源自开源软件世界的安全建议。


https://github.com/advisories


640.png

软件供应链危害目录:


供应链危害目录提供了真实示例,有助于提高认识并提供详细信息,让我们了解攻击媒介并考虑如何降低潜在风险。

此存储库包含指向软件供应链妥协文章的链接。我们的目标不是对所有已知的供应链攻击进行分类,而是捕捉许多不同类型的攻击示例,以便我们能够更好地了解模式并开发最佳实践和工具。

https://github.com/cncf/tag-security/tree/main/supply-chain-security/compromises


640.png

相关文章
|
应用服务中间件 nginx
wireshark抓包入门使用教程
wireshark抓包入门使用教程
2029 0
wireshark抓包入门使用教程
|
SQL 监控 druid
Druid未授权访问 漏洞复现
Druid未授权访问 漏洞复现
20373 0
|
SQL Java 数据库连接
SpringBoot从入门到精通(二十七)JPA实现自定义查询,完全不需要写SQL!
前面讲了Spring Boot 整合Spring Boot JPA,实现JPA 的增、删、改、查的功能。JPA使用非常简单,只需继承JpaRepository ,无需任何数据访问层和sql语句即可实现完整的数据操作方法。 JPA除了这些功能和优势之外,还有非常强大的查询的功能。以前复查的查询都需要拼接很多查询条件,JPA 有非常方便和优雅的方式来解决
SpringBoot从入门到精通(二十七)JPA实现自定义查询,完全不需要写SQL!
|
5月前
|
人工智能 搜索推荐 安全
商务邮件沟通效率提升85%:一套AI指令解决企业邮件痛点
本文基于3000+企业邮件案例,提供一套专业的AI商务邮件指令,通过数据驱动的方法论,帮助企业实现邮件沟通效率提升85%,客户转化率增加60%,年度ROI达400%。包含完整指令代码、实战案例和量化收益分析。
514 11
|
5月前
|
SQL Java 数据库连接
MyBatis 与 Spring Data JPA 核心对比:选型指南与最佳实践
本文深入对比Java持久层两大框架MyBatis与Spring Data JPA,从核心理念、SQL控制力、开发效率、性能优化到适用场景,全面解析两者差异。MyBatis灵活可控,适合复杂SQL与高性能需求;JPA面向对象,提升开发效率,适用于标准CRUD系统。提供选型建议与混合使用策略,助力技术决策。
1270 158
|
11月前
|
SQL 数据采集
Dataphin功能Tips系列(56)如何实现质量规则的批量修改
本文介绍了在Dataphin中针对Dataphin表和全域数据表的自定义SQL规则的批量修改的方法。
283 4
|
应用服务中间件 Linux nginx
“直播”极简教程
本文以一个非常简单的实际例子,搭建一个直播所需要的基础软件支撑平台,浅尝直播业务中核心业务概念及他们的交互流程。 对于一场直播,大致会拥有如下环节: * 主播通过直播设备将画面推送到直播平台 * 平台接收主播推送的画面 * 观众通过平台找到主播的直播画面,具体来说就是要找到主播的房间号 * 观众从平台拉取房间号中的直播画面
639 10
“直播”极简教程
|
Java Python
Python if-else嵌套!
本文详细介绍了Python中的条件语句,包括`if`、`if...else`、嵌套`if`及`if-elif`语句。`if`语句在条件为真时执行特定代码块,`if...else`则在条件为假时执行备选代码块。嵌套`if`语句允许在一层`if`语句内嵌套另一层`if`语句,实现更复杂的条件判断。`if-elif`语句简化了多条件判断的流程。文章通过多个示例演示了这些语句的使用方法,并讨论了常见问题,如在嵌套`if`中使用`elif`以及`if`语句的嵌套层次等。
892 3
|
边缘计算 监控 安全
边缘计算的挑战和机遇——数据安全与隐私保护
边缘计算的挑战和机遇——数据安全与隐私保护
360 0
|
Prometheus 数据可视化 Cloud Native
Grafana【部署 02】可视化工具 Grafana 9 最新版下载安装配置及使用(新特性体验)
Grafana【部署 02】可视化工具 Grafana 9 最新版下载安装配置及使用(新特性体验)
791 0