Google推动软件供应链安全框架

软件供应链成为网络威胁的新兴入口,Google也提出旨在确保软件供应链安全的框架,名为“软件产出物供应链层级”(Supply chain Levels for Software Artifacts framework,SLSA)。

供应链完整性攻击(非授权修改软件组件)这两年大幅增加,而且成为影响所有软件用户的公用攻击途径。Google开源安全团队的Kim Lewandowski指出,虽然市面上已有局部性的解决方案,但是还没有完整的端到端框架可定义如何缓解软件供应链上的威胁,以及提供一定的安全保证。有鉴于近来像Solaris和Codecov如此大规模的攻击,Google认为有必要制定一个公用框架,以保护开发商及用户。

去年底SolarWinds的Orion平台被黑客借道,将Sunburst等后门程序感染到微软、FireEye及美国政府单位。今年4月中旬再爆发程序代码覆盖率(Code Coverage)解决方案供应商Codecov遭黑,让黑客得以访问客户的凭证、密钥和令符(token),危及Codecov服务众多客户,美国安全企业Rapid7内部所使用的某些工具程序代码因此外泄。

Google提议的方法是“软件对象供应链层级”(Supply chain Levels for Software Artifacts framework,SLSA,念作salsa),它是以Google内部使用的框架,名为Binary Authorization for Borg为基础,缩写为BAB。根据Google解释BAB为部署时强制检查机制,确保Google公司工作相关软件和部署的组态都必须经过检查和授权,防止作业过程中被人篡改,尤其是可能访问用户资料的程序代码,BAB也可用于审核,对不符合要求的地方提出警告。实施8年以来,Google所有运营行业都必须套用这个框架。

Google指出,SLSA的目的是促进开源软件的安全,也能让用户了解他们使用的软件的安全水准。

SLSA是一组产业共识的安全指引,可渐进套用。它和best practice最大差异是在其强制性,企业可自动创建metadata,送进政策引擎,对特定组件(package)或组件(build)平台给予SLSA认证。若某个产出物(Artifact)获得最高级等级认证,消费者就可有信心这是未经篡改,且可追溯到源头的,但目前大部分软件都做不到。

SLSA包含4个等级,以第4级最高,每一级都包含前面等级的要求。第1级要求组件流程全自动化,且产生出处(provenance)。第2级要求软件版本管控,以及有托管组件服务(hosted build service)可产生经验证的出处。第3级要求来源及组件平台符合一定标准,以分别确保来源可被审核,及出处完整性(integrity)。第4级则代表所有软件变更都需有2人审查,且组件流程是依赖性完整(hermetic)且可重复的。

图片来源_Google

Google今天也开源发布PoC版SLSA 1出处产生器(provenance generator),让用户得以创建并上传出处,附加在组件产出物,则该组件就达到SLSA 1。Google表示未来也希望和主要来源、组件及组件平台合作,以推广这个框架。更多细节可在GitHub上找到。