开源吞噬软件

“软件吞噬世界,开源吞噬软件”已经不是一句玩笑话了。根据 Synopsys 发布的《2021 年开源安全和风险分析报告》显示,98% 的样本代码库中包含开源代码,75% 的样本代码库是由开源代码组成的。上述结果是通过对 1500+ 商业代码库进行分析得出的,而且开源不仅仅存在于大家熟知的互联网领域,而是在各个行业都有渗透,而且使用率都非常高。各行业代码库中开源代码占比的详情可查看下图

industry-open-source

开源软件供应链安全

开源软件供应链

供应链(Supply Chain)不是一个新词,一般指产品的多阶段生产过程:每个阶段都从前一阶段获得投入,然后增加自己的技能和贡献,在为后一个阶段进行生产。初始阶段一般是基础的组件,诸如原材料,生产的最终阶段是用户或消费者。

百度百科对于供应链的定义是:供应链(Supply chain)是指生产及流通过程中,涉及将产品或服务提供给最终用户活动的上游与下游企业所形成的网链结构。 维基百科对于软件供应链的定义是:在商业和金融中,供应链是一个组织,人员,活动,信息和资源的系统,涉及向消费者提供产品或服务。 供应链活动涉及将自然资源,原材料和组件转换为成品并交付给最终客户

一言以蔽之:供应链就是将“原材料”(不同行业的原材料不同)通过某种方式(组装、合并等)变为有用的产品,最终交付给终端用户使用的过程中所构建一个有效系统(如链条一样,环环相扣)”。对于软件供应链来说就是将“原材料”(代码)进行加工(修改、编译等)交付(分发或再分发)给用户的过程。根据前面所写,开源已经成为了软件行业的主旋律,已经很少有企业或者组织从零开始去开发一款软件了,几乎都是利用开源代码来快速构建软件。所以,软件供应链也可以认为是“开源软件供应链”,示意图如下:

sfc

而且开源软件供应链的规模在扩大,速度在变快。Synopsys 的报告指出,四大开源生态系统(Java、JavaScritp、Python 以及 .Net)过去一年发布了 6,302,733 个新版本,并且引入了 723,570 个新项目。这些社区现在拥有 37,451,682 个不同版本的组件,意味着全球的开源供应链年增长率达到了 20%。

开源软件供应链攻击

软件攻击一般是指企业或组织的软件漏洞被利用,从而导致系统被破坏,进而造成经济损失的行为或过程。由于开源成了现代社会所需软件的基石,所以传统的软件攻击模式也发生了变化,已经从集中攻击已经被公开披露的漏洞上,逐渐转向对开源软件的攻击,因为开源软件位于软件供应链的上游(upstream),一旦某个开源项目被攻击,则会直接影响到整个使用此开源项目的下游(upstream),这就造成了非常大的攻击面。

关于软件供应链的例子也说见不鲜。Sonatype 在其《2021 年软件供应链现状》报告中列举了过去两年的一些软件供应链例子,如下

ssc-example

这里面就有非常著名的 SolarWinds。

SolarWinds 是一家创立于 1999 年的美国公司,主要为企业或组织提供 IT 管理软件。在 2020 年 12 月 13 日,FireEye 发布了关于 SolarWinds 软件供应链攻击的公告。公告指出 SolarWinds 旗下的 Orion 软件包中被植入了恶意代码,这些恶意代码会绕过 SolarWinds 的数字证书验证,然后与第三方发起通信,而且这种通信会被伪装成 Orion Improvement Program(OIP)协议,让自己变得“合法”,从而达到隐藏自己的目的。由于 SolarWinds 拥有众多客户,甚至包括美国政府部门。在补救的过程中,众多用户不得不关闭受影响的设备。此次攻击的波及面大、持续时间长,造成了很大的影响。而根据时候的分析,恶意代码是在 2019 年的部分 Orion 产品中被注入的,恶意代码在结束休眠期后,开始发动攻击。这也是软件供应链攻击的一个特点:主动注入攻击漏洞,而非传统的针对既有漏洞进行集中攻击。

而且软件供应链攻击在 2021 年呈现爆炸式增长,从 2015 年 2 月到 2019 年六月,记录到 216 次软件供应链攻击事件,但是仅仅从 2019 年 7 月到 2020 年 5 月,记录的就有 929 次,而在过去的一年,攻击事件爆炸式的增长,增长率达到了恐怖的 650%。

ssc-increase

这一点在 Anchore 发布的《Anchore 2021 年软件供应链安全报告》中也得到了印证。报告提到 64% 的受访者表示在过去的 12 个月中受到过不同程度的软件供应链攻击。

software-supply-chain-attack

开源软件供应链安全

现状

开源的发展如火如荼,但是安全问题也凸显。Synopsys 的《2021 年开源安全和风险分析报告》提到,84% 的样本库中至少包含一个公开的开源漏洞,这一数字在上一年是 75%,而且最近三年都呈逐渐上升趋势;65% 的样本库存在许可证冲突的问题,也就是意味着这些代码存在许可证合规的风险。所以,软件供应链的安全不是很乐观。

特点

安全的复杂性与生俱来。不仅仅指软件研发的复杂(涉及到的环节多,人员多,流程多),更是指在软件成为现代化社会的基石后,软件的开发模式、交互模式、交付模式都发生了巨变。这一切都是一个复杂的生态系统。能理清楚整个系统本身就是一个很具复杂性的挑战,更别说维护整个生态的安全了。

安全也是最容易被忽视的,一者,大家都没有养成良好的安全防护意识,诸如在编码时考虑自己引入的第三方包是否是安全的,应用程序上线时,API 是否做了权限验证,访问链接是否是 https 的(至今还能看到大量的网站用的是 http);二者,安全需要一定的投入,包括招聘安全专业人员,建立良好的安全防护体系,在某些角度看,是属于“投入产出比”比较低的,在极力追求商业利益的今天,安全的优先级往往靠后;三者,人都有侥幸心理:安全漏洞、攻击怎么可能发生在自己身上。所有这些都很容易忽略安全。

由于开源成为软件开发的主流,很多软件都是由开源组件组成,很多开源组件都是共享共用的,如果一旦某个组件发生了安全问题,则影响的不仅仅是某一款软件,某一企业或组织,很有可能是众多款软件,众多企业或组织。这就是一个点影响到了一个面。影响范围大、影响程度深。

好处

安全问题最直接的影响就是经济损失,直接或间接的。攻击常常会导致文件被锁、系统被毁,导致整个用户服务中断,这会造成巨大的经济损失。而且在供应链中,如果上游遭受了攻击,则下游受到的攻击面可能是指数级的。正如前面的 SolarWinds 攻击一样,整个攻击导致数万用户受到影响,更可怕的是,很多用户不知道自己所用的软件中包含被攻击的组件,所以便不会采取补救措施,但是攻击威胁一直存在。这也是软件供应链攻击的可怕之处,软件组件被多次分发、包装,当攻击发生的时候,不能第一时间判断出受影响的系统范围,从而不能够及时制定补救措施,当潜在威胁变成真正攻击的时候,那就是灾难。

所以,保证软件供应链安全能够降低企业的运营成本。

安全之所以一直是老大难问题,原因之一就是互不信任,导致团队之间、上下游存在壁垒。软件供应链安全背后的一个重要逻辑就是要有足够的透明性,比如软件的组件组成透明化(也是现在常说的软件物料清单 Software bill of materials),软件的交付透明化(比如可以采用 CI/CD)等。足够的透明化是能够建立信任的。信任的建立也将打破团队之间、上下游之间的壁垒,让团队、上下游的协作、沟通高效运行起来。

如果安全不再是软件研发、交付的最大阻碍,而且有完整的手段来确保软件研发、交付的全流程安全时,软件研发的生命周期会大大缩短,也就能够将在敏锐把握市场动向的时候把软件快速推向市场,让市场检验产品,由于交付快速、安全,能够带来更大的容错空间,也就是的创新成为可能。毕竟尝试,不断地尝试是创新的重要方法。

手段

纵深防御:极狐GitLab DevSecOps

极狐GitLab DevSecOps 是极狐GitLab 旗舰版的重要功能,包含七大主要安全功能:容器镜像扫描、静态应用安全测试 (SAST)、动态应用安全扫描(DAST)、密钥检测、License合规、依赖项扫描以及模糊测试。安全能力覆盖软件开发的全生命周期(从编码到上线运维),涵盖代码从静态(编码)到动态(运行上线)转变过程的安全保障。所有安全功能都是开箱即用,而且可以和容易和极狐GitLab CI/CD 集成起来。这样就能做到真正的 DevSecOps:安全持续左移 & 安全持续自动化

极狐GitLab DevSecOps 七大安全功能各有功能特性与覆盖范围与保障阶段:

此外,极狐GitLab DevSecOps 还有以下功能:

极狐GitLab 是一个一体化的 DevSecOps 平台,其丰富的安全功能,可以在不同阶段使用不同的安全手段来保障应用程序的安全,进而构建起软件供应链安全屏障。

60天免费试用极狐GitLab专业版

极狐GitLab不仅是源代码管理或CI/CD工具,它是一个覆盖完整软件开发生命周期和DevOps的开放式一体化平台。

企业版试用
售前咨询
联系电话
在线支持
预约演示