摄影/余至浩
近两年,软体供应链安全越来越受重视,除了持续强化软体安全外,也有台湾企业开始结合软体物料清单(SBOM)增强软体供应链的安全性,国泰金控就是其中一家,他们在国泰中台微服务应用中,开始运用SBOM表追踪和记录软体元件的组成,及时发现和修补漏洞,并在攻击事件后进行还原,进而提升软体供应链的安全。
负责打造这个安全防御圈的是国泰金控数位数据暨科技发展中心的开源创新发展小组。该小组成员之一的DevOps工程师赵振胜近日在iThome台湾云端大会上分享了他们在软体供应链安全防护中应用SBOM的经验。
软体供应链的威胁在近几年日益增加,例如近年来爆出的Log4j零日漏洞,曾引发大规模零日的RAC漏洞被骇客利用,导致企业只要引用这个元件就容易受到攻击。今年还出现了另一个针对软体供应链的攻击,名为XZ Utils的后门供应链漏洞,再再显示出企业软体供应链安全的重要性和迫切性。
SBOM软体物料清单的组成基本要素
为了加强软体供应链的安全,国泰金控尝试在软体供应链安全防护中结合SBOM软体物料清单,使用SBOM表追踪和记录软体元件的组成,提高软体元件的可见性和透明性,并先从国泰自己的中台微服务供应链开始导入。
根据美国商务部和国家电信与资讯管理局(NTIA)对于 SBOM的组成基本要素有7项,包含供应商名称、元件名称、各元件名称的独立ID或Hash值、版本资讯、元件彼此间的关联关系、元件作者资讯等。
赵振胜指出,SBOM是提高软体供应链安全的关键工具。在SBOM软体物料清单中提供了软体的版本、依赖关系、组件以及许可证资讯,当软体供应链受到攻击时,安全团队可以利用这些资讯确认影响并快速找出有问题的软体元件,将损害降到最低。
尤其,过去开发人员经常使用开源元件或第三方元件时,随著对这些软体元件依赖的增加,开发人员对软体够掌控的部分就越少,因而增加了软体供应链的安全风险,他认为,透过SBOM能够有效解决这个问题。
软体供应链安全防护结合SBOM表有四大好处
赵振胜指出,在软体供应链安全防护中结合SBOM表有四大好处。首先,SBOM 表可以提供软体元件的可见性和透明度,增强软体供应链的安全性;其次,透过详细的元件列表,可用于漏洞管理,并能在攻击发生后协助进行事件还原。
此外,由于SBOM可以列出每个应用程式中的元件及其版本,一旦遇到特定漏洞时,就可以快速知道公司是否使用这些元件,并可用于风险评估以决定修补程式的优先顺序。最后,SBOM还可以提供许可证资讯,确保符合合规及监管要求,像是金融业。
国泰中台由复杂的微服务架构组成,分为闸道层(Gateway)、复合层(Composite)、以及基底层(Base)三层式架构,因此,赵振胜表示,每个微服务架构间的元件与SBOM中的关联性建立非常重要,甚至还需要将SBOM表的工作流程结合软体开发生命周期(SDLC),导入在每个工作环节和步骤中。
国泰中台微服务导入SBOM遇到的挑战
他指出,国泰金控一开始先在微服务中台中,利用SBOM表,加强软体供应链的安全性,但在导入过程中也遇到不少挑战,包括如何选择SBOM表导入时机、SBOM表解析和管理、SBOM表视觉化以及如何确保SBOM表资讯的完整性和不被篡改。为了克服这些挑战,他们导入不少开源工具,来逐一加以解决。
例如,为了产生微服务供应链SBOM表,国泰团队采用了CycloneDX和Syft两款开源工具,来进行SBOM表的生成,接著将SBOM表导入在在工作流程(Pipeline)各阶段,包括原始码(Source Code)、 建置Jar档以及映像档档分别导入这两个工具。
由于SBOM本身是JSON 格式,为了方便解析及管理,他们还使用另一款开源工具Dependency Track,利用SBOM即时分析依赖元件并识别漏洞,来视觉化和管理第三方元件及相似性。
赵振胜表示,Dependency Track本身提供了多种串接功能,可以支持CycloneDX 格式的SBOM 作为输入,并可以与 Slack 以及 Jenkins 串接作为输出,还可以使用常见的统整软体来管理漏洞。
汇入SBOM表后,从Dependency Track介面中,不仅看到元件名称以及版本资讯及使用许可资讯,还可以看出这次所汇入的应用程式,包含了哪些弱点,不同弱点会有不同颜色来区分。开发人员还能检视所汇入的应用程式,包含弱点,不同弱点会以不同颜色区分,并且可以点击查看更详细的资讯。此外,该介面还提供审核功能,允许开发人员对每个弱点进行修复回复和提出审核建议。
国泰金控还使用了Google的GUAC建立可视化的SBOM表,来提供依赖管理和对软体供应链安全的全面视图。从视觉化的 SBOM 表中可以用树状图的方式呈现应用程式中不同元件之间的关联。
赵振胜表示,团队建立了签核和授权机制,来确保SBOM不被异动。例如导入导入了Cosign工具,用于SBOM签核,确保SBOM表的异动历程都有完整的记录。又或是在SBOM汇入后,进一步将应用程式整合到CICD流程,以便透过验证方式来进行确认,来确保SBOM资讯的完整性,以及不被异动。
赵振胜表示,团队建立了签核和授权机制,以确保 SBOM不被篡改。例如,导入了Cosign工具,用于 SBOM签核,确保SBOM表的异动历程都有完整的记录。此外,在SBOM汇入后,进一步将应用程式整合到DevOps敏捷的CICD流程中,通过验证方式来确认 SBOM资讯的完整性和防止异动。最后,他们还导入VEX文件来收敛开发团队及资安团队发现的漏洞,来了解已知的漏洞的元件在其使用的产品环境中的可用性,以及骇客是否可以利用该漏洞造成威胁。
赵振胜强调建立左移(Shift Left)观念的重要性。他表示,企业必须将SBOM 纳入开发流程,以便在软体开发生命周期的早期阶段展开评估和解决漏洞。此外,已上线服务的 SBOM 管理也是必须追踪和纳入考量的重要项目。他提到说,SBOM文件包含有关软体组件的关键资讯,因此也必须保持这些资料的机密和安全性。