又是供应链安全:GUAC 项目 0.1 版释出
GUAC(https://guac.sh),Graph for Understanding Artifact Composition,是 Google 开源安全团队的最新安全工具。
这个名字不好翻译,直译是“用于理解工件组成的图表”。很显然,这个安全工具的目的是使软件供应链的物料安全因素可视化。项目地址:
https://github.com/guacsec/guac
01 先说说起因。
在 2022 年 10 月的 Kubecon,Google 开源安全团队就介绍了开发这个软件的起因,是软件行业迫切需要一种工具,能了解软件供应链安全的全面情况。
熟悉软件供应链安全的安全管理人员都应该清楚,近年来软件供应链攻击事件层出不穷。从稍早一些的 CCleaner、XShell 到最近影响甚大的 SolarWinds 和 3CX(而且 3CX 属于双重暴露攻击),可见软件开发行业要面对的供应链风险因素越发变得复杂。
做好网络安全需要有全局观。对于安全管理人员,无论是一线工程师到首席安全官,都需要具备能将各种不同的供应链生态系统的安全信息相互联系起来的能力,才能清晰和正确地理解企业内各种软件组件所带来的潜在安全风险,从而跟上甚至超越攻击者,实现未雨绸缪。
02 GUAC 项目的目的就在于此:
GUAC 可以聚合软件安全相关的元数据,典型如 SBOM 软件物料清单,并通过与企业软件供应链中的软件建立交叉映射关系,使得安全管理人员可以清晰地观察到软件物料之间的相互影响。
这些关系数据可以通过 GUAC 提供的符合 GraphQL 定义的接口进行访问使用,使软件企业的安全管理人员可以将 GUAC 整合到自己的内部开发链管理环境,实现主动风险管理。
在未来,GUAC 计划成为公共服务,对于任何软件供应链生态系统都能提供高度准确的供应链安全元数据。实现帮助更广泛的软件开发社区能更好地评估其组织和项目的供应链安全态势。
03 GUAC 的具体功能?
首先就是 GUAC 的动态聚合能力。GUAC 是动态的安全元数据的数据库,持续接收来自诸如 OSV.DEV、DEPS.DEV 等信息源的最新的风险威胁信息,并将风险信息与企业的 SBOM 软件物料清单、SLSA 软件工件供应链级别信息整合和深度分析,呈现出动态的软件供应链风险整体态势图。
当软件工件之间的影响关系能直观地呈现时,风险控制就自然变得明朗,能有的放矢地合理控制风险(别忘了风险控制需要投入成本)。
企业可以按需要将 GUAC 与自身软件开发工作流内的软件风险元数据相整合,从而实现与自身软件产品同等水平的风险因素依据。
更具体一些,GUAC 可以在企业的软件目录之间建立连接;使用各种数据源发现软件供应链数据中的缺口;识别软件供应链中的威胁,并提供补救的路径。
企业在集成使用 GUAC 时,从主动风控的角度,可以实现在自身软件供应链生态系统中定位最常用的关键组件、发现整体安全态势中的弱点、防止发生供应链经攻击后被控制、寻找内部对风险交叉依赖的敞口等作用;从组织运行的角度,可以核实将要部署的应用程序符合相关安全策略的证据、跟踪生产中的所有二进制文件是否都可以追溯到安全管理的存储库等作用;从风险响应的角度,可以查找组织软件工件存储库中的哪些部分受到新漏洞的影响、将可疑的项目生命周期事件反向跟踪到已经被引入组织的风险因素、掌握开源项目的过期弃用会对组织构成的风险影响等作用。
其次是 GUAC 能无缝集成不完整的元数据。也就是在前面所提到的,由于高质量的 SBOM 软件物料清单并不多见,GUAC 实现了先在各种供应链元数据文档间建立链接,然后使用启发式算法猜测正确的关系和意图,填补其中的空白(典型如依赖链上节点的跳跃性缺失等),从而提高数据的质量。
同时,GUAC 社区正通过与 SPDX(The Software Package Data Exchange,软件包数据交换)项目密切合作而推进 SBOM 工具和提高元数据的质量。
SBOM 软件物料清单质量普遍不高的原因实际极为复杂。
从行业特性而言,这是软件工程所固有的缺陷,与软件企业的能力成熟度直接相关:能持续产出准确的 SBOM 软件物料清单的软件企业,其成熟度实质达到了 CMM4 级即已管理级。
顺便复习一下 CMM5 级的定义:初始级、可重复级,已定义级,已管理级,优化级。
除了开发过程管理能力外,企业软件产品复杂度,混合语言平台开发,连带工具链多样性,版本依赖等等都会导致事情的复杂性以几何方式增加。
如果按合规要求,企业需要向使用者解释自己软件产品内包含的第三方构成,企业就需要执行 SBOM 软件物料清单公开的一系列操作,包括在企业内部建立工作流程以及与持续集成、持续交付相整合,将其软件供应链情况制作成物料清单,与软件更新一同透明公开发布等等。所有这些事情全都和管理成熟度相关。
因此,大多数的 SBOM 软件物料清单并不完整和不准确,甚至存在前后矛盾的情况。
再次是 GUAC 能提供持续一致的接口。SBOM 软件物料清单具有多种定义,比如经美国 NTIA 确定可用的 SPDX,SWID tags 和 CycloneDX 等。其中 SPDX 经过多年发展已经成为国际开放标准,最新版本是 ISO/IEC 5962:2021《信息技术—SPDX 规范 V2.2.1》。值得注意的是中国信通院也是 SPDX 项目的支持单位之一,详情可参考下文:
软件供应链安全社区 标准规范组|ISO/IEC 5962:2021《信息技术—SPDX 规范V2.2.1》文件解读
事情的重点在于 NTIA 提出的要求中,指出了作为 SBOM 软件物料清单必须包含的元数据、自动化支持要求和实践流程等基本要素:
https://ntia.gov/page/software-bill-materials
于是在合规要求下,SBOM 软件物料清单的概念迅速流行起来。但要实施有效管理就要同时面对物料清单的多种不同的行业标准、文档类型和数据格式,要执行数据查询就会很复杂。
为了把这些相关信息集成在一起,GUAC 自行定义了一套软件供应链的通用词汇表,包括:工件、包、存储库以及它们之间的关系,并将之以 GraphQL 兼容的 API 接口进行公开,接口的用户便能基于 GUAC 创建的知识图谱实现与自己管理要求的集成,也就是一次发起就可以无缝查询不同的 SBOM 软件物料清单,无论它本来是什么格式。
最后是集成所能实现的优势和深度应用。GUAC 项目开发组设想了一些基于 GUAC 进行集成后可以获得的优势或深度应用情况,包括基于软件工件间的信任关系创建开发管理策略、工件出现安全漏洞利用情况时能快速排查应对、对安全事件进行风险评估以确定产品升级计划、以及创建用于数据探索的可视化工具、用于大规模分析和事件响应的命令行工具、持续集成过程中的检查、实现开发管理策略在开发流程上左移的开发环境工具等。
另外,由于 GUAC 体系结构是灵活即用的,开发者还可以向 GUAC 集成更多的数据源,从而扩展 GUAC 的覆盖范围。
04 GUAC 的将来?
Google 宣称将致力于使 GUAC 成为适合网络安全专业人员使用的最好的元数据合成和聚合工具。并且计划在未来把 GUAC 作为一种公共服务运行,为每个软件生态系统提供高保真度的供应链安全元数据。
同时,Google 正在根据美国相关法规(EO 14028)的要求在内部准备提供给政府的 SBOM 软件物料清单,也同时正在将这些清单纳入到 GUAC 中作为初始数据。
在 GUAC 项目继续发展的同时,GUAC 工作组还有另一个并行的实验性项目 GUAC-Visualizer:
https://github.com/guacsec/guac-visualizer
它是示范性的 GUAC 前端显示工具,可以连同 GUAC 一起自行部署以直观感受 GUAC 所实现的软件物料安全关系图。
以下的输出内容和例图来自 GUAC 网站,是对软件进行物料清单扫描后,发现了 log4j 漏洞点,并通过 visualizer 清晰地呈现出 log4j 组件在软件中的依赖路径:
由于只是实验性的项目,因此 GUAC 工作组还是建议使用 GraphQL 接口的工具。
05 小结:
对于无论是甲方还是乙方的网络安全管理人员,在静待国内相关合规要求持续出台的同时,需要加强学习和掌握软件供应链安全知识,努力在深刻理解和把握总体国家安全观的要求下,充分认识到软件供应链的重要性,了解我国在软件供应链安全问题上的态度以及已经发布的相关管理要求,比如《网络安全法》、GB/T 36637-2018《信息安全技术 ICT 供应链安全风险管理指南》以及 GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》等相关标准,履行好自己的网络安全职责。
笔者个人网站原文链接:
版权声明: 本文为 InfoQ 作者【sender_is_sender】的原创文章。
原文链接:【http://xie.infoq.cn/article/21cae27da147e7fb20f3bfa31】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论