GUAC(https://guac.sh),Graph for Understanding Artifact Composition,是Google开源安全团队的最新安全工具。
这个名字不好翻译,直译是“用于理解工件组成的图表”。很显然,这个安全工具的目的是使软件供应链的物料安全因素可视化。项目地址:
在2022年10月的Kubecon,Google开源安全团队就介绍了开发这个软件的起因,是软件行业迫切需要一种工具,能了解软件供应链安全的全面情况。
熟悉软件供应链安全的安全管理人员都应该清楚,近年来软件供应链攻击事件层出不穷。从稍早一些的CCleaner、XShell到最近影响甚大的SolarWinds和3CX(而且3CX属于双重暴露攻击),可见软件开发行业要面对的供应链风险因素越发变得复杂。
做好网络安全需要有全局观。对于安全管理人员,无论是一线工程师到首席安全官,都需要具备能将各种不同的供应链生态系统的安全信息相互联系起来的能力,才能清晰和正确地理解企业内各种软件组件所带来的潜在安全风险,从而跟上甚至超越攻击者,实现未雨绸缪。
GUAC可以聚合软件安全相关的元数据,典型如SBOM软件物料清单,并通过与企业软件供应链中的软件建立交叉映射关系,使得安全管理人员可以清晰地观察到软件物料之间的相互影响。
这些关系数据可以通过GUAC提供的符合GraphQL定义的接口进行访问使用,使软件企业的安全管理人员可以将GUAC整合到自己的内部开发链管理环境,实现主动风险管理。
在未来,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软件物料清单必须包含的元数据、自动化支持要求和实践流程等基本要素:
于是在合规要求下,SBOM软件物料清单的概念迅速流行起来。但要实施有效管理就要同时面对物料清单的多种不同的行业标准、文档类型和数据格式,要执行数据查询就会很复杂。
为了把这些相关信息集成在一起,GUAC自行定义了一套软件供应链的通用词汇表,包括:工件、包、存储库以及它们之间的关系,并将之以GraphQL 兼容的API接口进行公开,接口的用户便能基于GUAC创建的知识图谱实现与自己管理要求的集成,也就是一次发起就可以无缝查询不同的SBOM软件物料清单,无论它本来是什么格式。
最后是集成所能实现的优势和深度应用。GUAC项目开发组设想了一些基于GUAC进行集成后可以获得的优势或深度应用情况,包括基于软件工件间的信任关系创建开发管理策略、工件出现安全漏洞利用情况时能快速排查应对、对安全事件进行风险评估以确定产品升级计划、以及创建用于数据探索的可视化工具、用于大规模分析和事件响应的命令行工具、持续集成过程中的检查、实现开发管理策略在开发流程上左移的开发环境工具等。
另外,由于GUAC体系结构是灵活即用的,开发者还可以向GUAC集成更多的数据源,从而扩展GUAC的覆盖范围。
Google宣称将致力于使GUAC成为适合网络安全专业人员使用的最好的元数据合成和聚合工具。并且计划在未来把GUAC作为一种公共服务运行,为每个软件生态系统提供高保真度的供应链安全元数据。
同时,Google正在根据美国相关法规(EO 14028)的要求在内部准备提供给政府的SBOM软件物料清单,也同时正在将这些清单纳入到GUAC中作为初始数据。
在GUAC项目继续发展的同时,GUAC工作组还有另一个并行的实验性项目GUAC-Visualizer:
它是示范性的GUAC前端显示工具,可以连同GUAC一起自行部署以直观感受GUAC所实现的软件物料安全关系图。
以下的输出内容和例图来自GUAC网站,是对软件进行物料清单扫描后,发现了log4j漏洞点,并通过visualizer清晰地呈现出log4j组件在软件中的依赖路径:
./bin/guacone certifier osv
+-----------+-----------+---------------------------------------+
| NODE TYPE | NODE ID | ADDITIONAL INFORMATION |
+-----------+-----------+---------------------------------------+
| osv | 138449 | vulnerability ID: ghsa-7rjr-3q55-vv33 |
+-----------+-----------+---------------------------------------+
Visualizer url: http://localhost:3000/?path=138449,138450,15573,15572,15515,2509,15574,15337,15336,15335,2
由于只是实验性的项目,因此GUAC工作组还是建议使用GraphQL接口的工具。
对于无论是甲方还是乙方的网络安全管理人员,在静待国内相关合规要求持续出台的同时,需要加强学习和掌握软件供应链安全知识,努力在深刻理解和把握总体国家安全观的要求下,充分认识到软件供应链的重要性,了解我国在软件供应链安全问题上的态度以及已经发布的相关管理要求,比如《网络安全法》、GB/T 36637-2018《信息安全技术 ICT供应链安全风险管理指南》以及GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》等相关标准,履行好自己的网络安全职责。
本站微信订阅号:
本页网址二维码: