指南 您的可操作SBOM食谱 构建、维护和使用软件材料清单的关键考虑因素 你最喜欢的巧克力曲奇的成分清单包括面粉、糖、黄油、巧克力片等等。但是这些巧克力片是由一些成分组成的,包括糖、巧克力、可可脂、脱脂牛奶等等。 现在想象一下,如果巧克力片含有受污染的可可脂,并且对任何含有它的产品进行了召回。饼干制造商对这些巧克力片负责,并且必须保护客户免于食用不良饼干。 同样,软件制造商需要了解其软件应用程序中的组件,以保护自己及其最终用户免受包含安全漏洞或软件许可问题的组件的影响。但是,如果没有完整、动态地查看应用程序中的内容,您、您的消费者和供应商都无法自信地找到或识别可能使您面临风险的组件。 什么是SBOM 软件材料清单(SBOM)是软件应用程序的“成分列表”。它包括所有开源、专有和商业代码,以及相关的许可证、版本和补丁状态。 通过提供对软件应用程序所有组件的实时可见性,SBOM可以帮助在不良行为者利用风险和威胁之前识别它们。开发团队可以使用SBOM来评估其软件的质量、安全性和可靠性。因此,尽管SBOM不能直接防止攻击,但它们是成功的软件供应链安全计划的基石。 但要有效,SBOM不能一次创建,然后就被遗忘。软件不断变化;添加新的依赖项,更新或删除旧的依赖项,发现并修补漏洞。如果没有持续的更新,SBOM会很快变得过时和不准确,使其变得无用。维护全面、最新的SBOM有助于组织采取主动措施来降低风险,并保持供应链安全和法规遵从性。 谁需要SBOM 如果您构建或使用软件,您应该关心SBOM。通过生成SBOM,开发团队可以为自己及其消费者提供信息,这些信息对于更好地了解与特定应用程序相关的风险至关重要。从那里,您可以更好地避免并应对安全漏洞和策略违规,或修复损坏,危险或其他故障的软件。关注软件安全性和质量的组织将SBOM作为其软件开发生命周期(SDLC)中最佳实践的一部分。 由于近100%的商业代码库包含开源软件,因此供应链比以往任何时候都更加复杂和模糊,涉及更多的链接和依赖关系。降低风险的唯一方法是保持对软件所有组件的可见性,并在识别风险时解决风险领域。 当风险失控时会发生什么 Gartner预测,到2025年,全球45%的组织将在其软件供应链上遭受攻击。由于依赖和连接,应用程序中的缺陷和漏洞会给组织带来远离初始攻击媒介几度的风险。一些已经发生的突出攻击包括 •Log4J(2021):ApacheLog4J严重漏洞允许攻击者在易受攻击的服务器上执行任意代码,获得NVDCVSS严重性等级的10/10。 •SolarWinds(2019):通过将恶意代码插入全球30,000个组织使用的SolarWindsOrion平台中,黑客可以在未被检测到的情况下访问帐户和用户。受害者包括几家财富500强公司和 美国政府部门。 •Equifax(2017):黑客通过其客户投诉门户进入Equifax,使用ApacheStruts框架中尚未修补的已知漏洞。 •心血(2014):广泛使用的OpenSSL加密软件中的一个错误诱使计算机传输服务器RAM的内容,从而使黑客可以访问密码和个人身份信息。受害者包括 Google,Dropbox,Reddit,Facebook,加拿大税务局等。 软件供应链上网络攻击的频率和严重程度的增加刺激了全球各行业和政府的一系列法规和要求。因此,SBOM越来越具有强制性,并被认为对大多数组织的法规遵从性战略至关重要。要求或推荐SBOM的法规和标准包括 美国 •第14028号行政命令指示国家标准与技术研究所(NIST)制定创建和发布SBOM的准则,并建立在联邦采购流程中使用SBOM的标准。 •网络安全和基础设施安全局(CISA)建议使用SBOM作为其安全软件开发指南的一部分。 •国家电信和信息管理局(NTIA)定义了一组应包含在SBOM中的最小元素。 欧洲联盟 •欧盟网络安全机构(ENISA)发布了物联网安全指南,建议为物联网设备提供SBOM。 UnitedKingdom •英国国家网络安全中心(NCSC)建议组织使用SBOM来了解风险并管理其使用的软件组件中的漏洞。 澳大利亚 •澳大利亚网络安全中心(ACSC)《信息安全手册:软件开发指南》建议使用SBOM来提高消费者的网络供应链透明度。 加拿大 •加拿大通信安全机构(CSE)关于提高加拿大数字供应链弹性的建议敦促使用SBOM来提高透明度和应对安全攻击的能力。 显然,创建和维护SBOM是构建安全且合规的软件应用程序的关键最佳实践。但是您如何开始?创建它后您会做什么?为了帮助回答这些问题,我们编写了一些关键建议。 建议1 使SBOM创建成为可重复的过程 传统上,SBOM是软件应用程序中组件的清单。但是SBOM超出了静态列表;它还包含组织用来清点其软件的流程。 我们鼓励组织在更广泛的意义上将SBOM视为管理系统。创建和维护SBOM所涉及的实践、流程和活动应该标准化,以便它们是可预测和可重复的。这包括确定将SBOM生成构建到应用程序开发管道中的方法,决定何时 应该生成SBOM(例如,每次发布或提交),并通过与构建工具和存储库集成来自动生成SBOM。 在考虑SBOM解决方案时,自动化是关键。符合NTIA标准的SBOM需要包罗万象,并且具有机器可读性。手动收集这种级别的细节几乎是不可能的。此外,软件构建者需要一个可以随其扩展的解决方案,而手动流程又是不可能的。 强大的软件组成分析(SCA)工具可以轻松生成包含第三方自定义组件的完整开源SBOM。最重要的是,SCA工具持续提供SBOM信息,实时提供最完整的风险图片。正确的SCA工具可以将SBOM生成直接添加到您的SDLC中,从而使流程更加轻松。 建议2 以标准化格式生成SBOM 目前,存在三种标准SBOM格式:软件包数据交换(SPDX)、CycloneDX和软件标识(SWID)。 •SPDX是一个由开源工具和商业提供商组成的丰富生态系统支持的ISO标准(ISO/IEC5962:2021)。 •CycloneDX在OWASP社区开始用于应用程序安全和供应链组件分析。 •SWID由NIST支持,并由ISO/IEC19770-2:2015标准定义。 我们敦促组织采用这些标准之一,以帮助其软件开发团队共享有关其软件包中组件的元数据。使用通用数据交换格式还可以更轻松地自动化生成SBOM的过程。 建议3 熟悉不同的SBOM类型 SBOM类型包含的数据也可能因SDLC阶段和行业而异。 SBOM类型包括 •Design •来源 •Build •已分析 •已打包 •已部署 •运行时 我们强烈建议组织熟悉不同的类型,包括它们的优点和限制。例如,运行时SBOM可以提供系统运行时正在使用的内容的可见性,包括动态加载的组件和外部连接。但是它们可能需要额外的开销,并且需要更多的时间来创建。 建议4 计划一个值得信赖的交付方式 WealsorecommendthatorganizationsusethesametypeofSBOMconsistently.andbecognizantthatdifferenttypesofSBOMSpresentdatadifferent,soitwillnotlookthesameacrossSBOM. 组织需要考虑SBOM在生产后将如何交付。以不安全或不受控制的方式交付SBOM可能会导致无意或恶意篡改。规划安全交付方法有助于确保软件供应链的安全性、完整性、合规性、声誉、风险缓解和透明度。 同样重要的是,特定的SBOM映射到应用程序的正确版本。由于SBOM与单个版本的软件相关联,因此每个新发布的代码版本都需要一个新的SBOM。在拥有数十个具有多个版本的应用程序的组织中,很容易发生混淆。必须注意在任何SBOM的基线元素中包括组件名称和版本字符串。 建议5 确保您的SBOM满足行业的特定要求 没有SBOM应包括的标准定义,组织以前会自行决定购买者或最终用户需要了解多少有关应用程序中软件组件的信息。类似地,许多组织必须在生成SBOM后自行弄清楚如何处理它们。 此后,一些监管机构介入了某些行业的最低SBOM要求。EO14028和NIST为美国的SBOM生成和管理制定了指导方针S.政府及其供应商,NTIA已经建立了医疗保健和其他行业的标准(“...预计本指南可以应用于任何行业的SBOM的创建和维护”),FDA已经建立了连接医疗设备的附加标准。 NTIA为SBOM定义了三个最小元素。 •数据字段:这些包括供应商名称、组件名称、组件版本、其他唯一标识符、依赖关系、SBOM数据的作者和时间戳。 •自动化支持:这对于跨软件生态系统和组织边界扩展SBOM至关重要。它要求SBOM以三种标准格式(SPDX、CycloneDX、SWID)之一传达。 •实践和流程:这些包括频率,深度,已知的未知因素,分配和交付,访问控制以及错误的适应。 FDA要求医疗设备中的软件附加元素,理由是对完整性和准确性的需求增加。除了NTIA标准中的数据字段之外,符合FDA标准的SBOM还必须包括支持级别、支持结束日期和已知的安全漏洞。这些额外的元素超越了开源项目,主要适用于应用程序中的第三方/商业组件。 在汽车行业,ISO5230/OpenChain要求SBOM包括软件许可信息。 关键的要点是,仅仅将工具指向代码库并期望生成的SBOM足以满足您的需求是不够的。您必须确保您的SBOM满足您开展业务所在行业的所有特定要求。如果不这样做,可能会导致处罚、审计,甚至暂停市场授权。制造商有可能被排除在政府采购合同和伙伴关系之外,导致供应链中断和商业机会丧失。不符合SBOM要求还会损害组织的声誉,并削弱客户、合作伙伴和监管机构之间的信任。 建议6 关于SBOM的一在个误S解BO是M,中它们包仅含适用所于开有源代和第码三方软件组件。回到“成分列表”的类比,这类似于仅列出巧克力饼干中的成分子清单。为了全面起见, SBOM需要在软件应用中包含所有组件。 您的SBOM应包括 •专有代码 •商业软件开发套件 •私人商业图书馆 •合同软件 •商用现货代码 •开源软件 |synopsys.com|6 Synopsys的区别 Syopsys提供的集成解决方案可改变您构建和交付软件的方式,在解决业务风险的同时加速创新。使用Syopsys,开发人员可以像编写代码一样快地保护代码。您的开发和DevSecOps团队可以在开发管道中自动测试,而不会影响速度。您的安全团队可以主动管理风险,并将补救工作集中在对您的组织最重要的事情上。我们无与伦比的专业知识可帮助您计划和执行任何安全计划。只有Syopsys提供一切你需要建立信任你的软件。 有关Synopsys软件完整性小组的更多信息,请访问我们的在线网站www.synopsys.com/software。 ©2023Synopsys,Inc.保留所有权利。Synopsys是Synopsys,Inc.在美国和其他国家的商标。Synopsys商标列表可在www.synopsys.com/copyright.html上获得。此处提及的所有其他名称均为其各自所有者的商标或注册商标。2023年10月。 在使用SBOM的情况下,越少越好。为某些客户删除元素比从不同来源添加元素更容易。例如,FDA要求SBOM中有许多字段,而特定医院可能只需要一个子集。我们建议您专注于生成全面的、最新的SBOM,您可以通过删除特殊情况下的不必要元素来修改这些SBOM。 建议7 知道你会怎么处理你的SBOM 既然您已经生成了SBOM,您将如何处理它?您将如何将其映射到风险区域?您将如何将其用作控制和管理软件供应链的工具?回答这些问题将 确保您从SBOM中获得充分的收益,从而降低供应链风险,增加客户信心并支持法规遵从性。 SBOM可以帮助在不良行为者利用风险和威胁之前识别风险和威胁。但要有效,它不能一次创建,然后