写点什么

开源时代:极狐 GitLab 如何保证软件供应链安全

作者:极狐GitLab
  • 2023-12-21
    上海
  • 本文字数:4432 字

    阅读完需:约 15 分钟

开源时代:极狐GitLab如何保证软件供应链安全

开源吞噬软件


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


图片来源:Synopsys《2021 年开源安全和风险分析报告》


开源软件供应链安全


开源软件供应链


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

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

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



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


开源软件供应链攻击


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


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


图片来源:Sonatype《2021 年软件供应链现状》


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

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

软件供应链攻击在 2021 年呈现爆炸式增长,2015 年 2 月到 2019 年 6 月,216 次软件供应链攻击事件被记录;2019 年 7 月到 2020 年 5 月,929 次被记录,而在过去的一年,攻击事件爆炸式的增长,增长率达到了恐怖的 650%


图片来源:Sonatype《2021 年软件供应链现状》


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


图片来源:Anchore《Anchore 2021 年软件供应链安全报告》 


开源软件供应链安全


现状

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


特点

  • 复杂性

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

  • 易忽略

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

  • 影响广

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


好处

  • 降低成本

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

  • 建立信任

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

  • 加速创新

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


纵深防御:极狐 GitLab DevSecOps


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


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


  • 容器镜像扫描:能够对应用环境中的容器镜像进行静态扫描,使用开源扫描工具(Trivy、Grype)来对各种镜像进行扫描。同时还能将报告嵌入 MR(合并请求)中展示,亦或 Security 的 Dashboard 中单独展示。关于容器镜像扫描的使用可以查看文章极狐GitLab DevSecOps七剑下天山之容器镜像安全扫描

  • 静态应用安全测试(SAST):对代码进行“白盒”扫描分析,找出已知的安全漏洞。并出具漏洞报告,内容详细,一目了然。SAST 属于静态测试,往往发生在软件开发生命周期的开发或者构建阶段,越早发现安全问题,修复安全问题所需要的成本就越低。

  • 动态应用安全扫描(DAST):属于“黑盒”测试,模拟攻击者的行为,来对软件进行模拟攻击,以发现潜在的安全漏洞。极狐 GitLab 能够进行被动和主动扫描,并且支持 HTTP 凭据来测试密码保护部分,最终出具漏洞报告。DAST 往往发生在测试阶段。

  • 密钥检测:密钥检测可扫描代码仓库内容,找出那些不应该提交的敏感信息(诸如无意提交的 Token、API key 等)。同样会出具检测报告。密钥检测能够防止被提交的敏感信息遭到泄漏,从而增加系统被攻击的风险。关于容器镜像扫描的使用可以查看文章极狐GitLab DevSecOps七剑下天山之敏感信息检测

  • License 合规:能够搜索扫描项目依赖项中包含的相关 license,展示扫描信息,并对标记为拒绝或者新增的 license 进行标识。license 是开源的法律武器,license 合规能够让企业或个人避免陷入开源的法务纠纷中。

  • 依赖项扫描:可以分析依赖项中的已知安全漏洞,出具漏洞报告,从而确保应用程序中依赖项的安全。

  • API 模糊测试:这是极狐 GitLab DevSecOps 特有的一项安全功能。扫描工具可以向 API 操作发送随机输入来触发例外或崩溃,做进一步的“探索性“测试,以用来防治其他手段或者工具可能遗漏的漏洞。此功能和其他手段一起使用,将大大降低漏洞漏检的概率,尽可能的发现应有的安全漏洞。


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


  • 和极狐 GitLab CI 无缝集成,构建起完整的 DevSecOps CI/CD 流水线,实现安全的持续自动化,任何一步出现安全漏洞,都会终止流水线(是否终止可自由设置),避免有漏洞的代码部署上线;

  • 漏洞报告可以嵌入在 MR(Merge Request)中,给代码审查提供更多依据,进一步保证代码质量;此外报告还可以在 CI/CD 构建日志、Security Dashboard 等地方展示,可下载,可浏览;

  • 可以和极狐 GitLab 的 Issue 功能关联起来,当任意阶段检测出漏洞,可以直接创建 issue,然后可利用 Epic、Roadmap 等功能实现漏洞的管理;

  • 版本迭代快,功能特性多。仅仅极狐 GitLab14 版本就上线了诸如动态安全扫描 DAST 预设置、DAST 界面配置工具、项目级动态安全扫描 DAST 和密钥检测扫描的执行策略、追踪依赖性扫描和模糊测试的使用情况等功能。


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

用户头像

极狐GitLab

关注

开源开放,人人贡献 2021-05-19 加入

开放式一体化DevOps平台,助力行业高速协同增长!

评论

发布
暂无评论
开源时代:极狐GitLab如何保证软件供应链安全_极狐GitLab_InfoQ写作社区