11 月 1 日下午,由深圳金融科技协会主办的湾区湾区金科(Fintech)沙龙(第四十期)—— 麻利开发平安与软件供应链平安实际探讨专场圆满举办,逾 1500 名业界人士线上线下同步加入。数澈软件 Seal 联结创始人梁胜博士和江鹏受邀缺席此次沙龙并发表题为《如何保障企业软件供应链平安》的演讲,本文为演讲实录。
就以后而言,软件供应链还是一个比拟新的概念,最近一两年这个概念才开始进入公众视线。首先,先介绍一下软件供应链的背景。软件供应链这一概念征引自传统制造业中的供应链。咱们来回看整个软件开发到公布的流程就会发现这与传统制造业的供应链流程非常相似——软件从最早开发开始,到两头构建,而后进行测试,测试完结后变成一个二进制的制品,接着在云端或者本地公布软件。
具体来说,在软件供应链中有一个特地重要的概念叫做软件物料清单(SBOM,Software bills of materials)。比方一台电视机,有显示屏、有元器件等等零部件,这些货色在制造业的术语里被称为 BOM(物料清单),它决定了产品的老本和品质,很大水平上也决定了产品的可靠性和安全性,所以如果两头的“元器件”蒙受了攻打,将会对产品造成重大影响。
软件供应链也是如此,比方部署一个利用零碎,这个零碎内应用了各种服务,每个服务可能蕴含自研代码以及一些内部的开源组件还有第三方供应商的代码,同时第三方供应商所提供的代码也会蕴含自研的和开源组件,所以整个形成其实十分复杂。因而,国防畛域、政府机关以及金融畛域的企业都对此有很高的要求,因为一旦某个环节蒙受攻打,所造成的结果不堪设想。
在整个供应链来看,其实第三方供应商所提供的代码比拟有保障,因为企业外部会先对供应商进行审查,最终抉择的供应商个别可信赖程度较高。至于自研代码,企业外部也能够通过各种伎俩对其进行管制,至多能够确保起源的可靠性。因而,最近这几年来最大的危险还是来自于开源组件。 因为近几年开源文化在软件世界流行,开源组件的数量呈爆发式增长。一个利用在开发过程中会引入大量开源组件,但并不是每个开源组件都是可信赖的。
此外,开源组件更新速度也很快,每个组件可能几个月或者几周就会更新一次,兴许在利用集成的所有组件中每天有组件在更新,这会变得难以管制。因而对于软件供应商来说,这形成了一个十分大的威逼。在过来,软件供应商把利用或操作系统公布到一个设施上,这个设施兴许会受到一些传统的平安攻打,比方针对终端的攻打。然而当初有终端的防护、网络的防护,相对来说攻打设施曾经没有那么容易。那么,黑客就开始将眼光转向了软件供应链。家喻户晓,一旦软件供应链被攻打,那么所有终端都在劫难逃,因而这个影响是十分大的。
其实此类问题早已存在多年,印象中十几年前业界就有提及,但过后还感觉只是一个实践上的问题,因为理论产生的事件还不多。然而过来的 5 年,产生的频率显著回升。比方 2020 年的 SolarWinds 黑客事件,当初这家公司奄奄一息,简直就是因为那次经验的黑客攻击。因为这家公司的软件是用来监控企业外部其余要害软件的,所以软件权限很高,并且被许多政府机关、银行、国防部门所应用,攻击者能够借此拜访到许多敏感信息。当这个软件存在破绽之后,所有采纳这一软件的企业的内容零碎都会存在微小破绽。截止今日,这一攻打所造成损失还无法估量。
更为人所知的事件还有 2021 年末 Java 语言中驰名的开源日志框架 Log4j 的高危破绽。因为这些影响宽泛的事件,当初许多软件平安厂商意识到了软件供应链的危险,于是将他们现有的工具组合起来,来解决一些软件供应链平安的问题。其中,SAST 和 SCA 是对软件供应链最实用的。
SAST 即动态利用平安测试,简而言之就是扫描源代码,看是否存在问题。SCA 即软件成分剖析,看 SBOM 里到底有什么。其实这两种工具曾经存在多年,但过后大家也不晓得怎么样更好地利用这两种工具,因为对软件供应链的意识有余。早前个别都用这些工具来查找程序中的谬误,或者是否有密钥放在了明文局部,或者是查软件的 License 是否合规。当初这些工具根本都开始用来解决一些软件供应链的平安问题。
但挑战仍旧很大,因为传统这些软件误报切实太多了,有很多假阳性。比方,之前我就把以前公司开发的一个软件拿去扫了一下,轻易就扫出了 5000 多个问题,而且都很重大,但人力上很难查得过去这么多问题,并且也不晓得如何修复。而且公司客户怎么办?这个软件曾经公布了好几年,如果这 5000 多个问题两头存在真正的大问题,那应该怎么办。
另外,软件供应链与多个部门有关系,比方 IT 部门、安全部门、运维部门等。研发部门在开发软件时用到的工具也特地多,每个环节都有可能查出一些谬误,那对于首席平安官,甚至首席信息官对这些都很器重,然而因为状况太简单很难搞分明。像之前提到的 SolarWinds 事件,事件一被爆出,公司 CEO 甚至引咎辞职。
就中国国情来说,软件供应链在中国还有一些非凡的要求,因为当初国内很考究对 IT 的掌控,因而对软件供应链的起源其实有更严格的要求。比方企业想晓得他们对所用到的组件是不是真正可控,是否能够禁止某个第三方的组件。数澈软件能够在这外面做一点事件。
还有一个问题就是 软件供应链自身是一个“链”,所以从肯定水平来说,与传统平安不太一样。传统的平安公司平安工具都比拟繁多,兴许提供很多不同的产品,但个别每个产品就干一件事,比方扫描病毒、管制网络安全等。然而软件供应链整个链路上的每个中央都有可能出问题——从源代码到构建到最初公布,两头各个组件之间的依赖性等。所以软件供应链的平安并不是一个点的问题。
接下来咱们看全链路到底是怎么回事,其实全链路有两个方面,一方面是“左移”,这个词在业界是比拟受认可的,为什么左移很重要?
因为越左移意味着越早发现,在开发阶段呈现的问题最好在开发的时候发现,而不要在运行的时候发现,因为越早发现越容易纠正。如果在运行的时候才发现,可能都很难回溯到最后的状况,也很难找到责任人。而且生产环境也不能停,那只能冒险运行。所以“左移”很重要。
然而“左移”也不能 100% 解决问题,因为最初的软件还有 50%~90% 的局部是第三方的组件。而且第三方的软件在链路的每个环节都有可能注入代码仓库,比方可能用到第三方的软件库,在构建阶段用到第三方的工具和操作系统,在制品库中用到第三方的镜像,最初运行阶段,可能在 K8s 或者云平台上运行,那云平台和 K8s 自身也会引入更多工具。
所以即使企业曾经 100% 进行平安左移了,但全链路仍旧须要检测,因为每一个环节都会有新的依赖项被引入,所以两者必不可少。因而数澈软件 Seal 就是为了解决中国企业的软件供应链平安问题。所以咱们提出要做一个防火墙,像网络防火墙一样,把整个软件供应链全链路的每个环节都爱护起来,而后进行对立治理,给安全部门提供可视化,最初做到平安和合规。