黑客

开源和云原生带来的下一代软件供应链,正面临新的攻击

  • 浏览次数 33349
  • 喜欢 0
  • 评分 12345

恶意网络攻击者对软件供应链的攻击,正向“上游”组件蔓延,再借助开源软件的“信任链”和影响力,导致的结果之一就是破坏性更大。Sonatype 的《2020软件供应链报告》报告提出,下一代软件供应链攻击正在到来,显著特点就是刻意针对“上游”开源组件,进行更主动的攻击。而此类攻击出现的背景正是开源组件和容器的广泛采用。

软件供应链及攻击

软件供应链一词常出现在科技公司和研究人员的表述中,Dell EMC 的产品管理总监 John Mark Walker 曾通过对比硬件供应链,描述传统软件供应链

他认为,硬件的供应链是来源于不同地区的、许多不同合作伙伴的零部件,传统软件供应链大多是定义企业内部制作软件,以及从第三方获得一些商业软件的过程。在此模式下,供应链上的大部分来源于公司内部,可能来自多个工程团队,一小部分软件来源于公司外部,因此供应链主要由内部产品定义,工程团队负责管理。另外来自第三方供应商的软件在组合时需要做合规检查,获得许可。

(简单的、一般的传统软件供应链)

另一个流传较广的定义是按照阶段划分,认为软件供应链通常包括三个阶段:软件研发阶段、软件交付阶段、软件使用阶段。

这种划分通常也有助于区分不同种类的软件供应链攻击,许多大型科技公司对此都有专门的讨论。腾讯安全平台曾总结软件供应链攻击环节阿里巴巴的工程师也曾例举不同阶段的攻击面

一是生产节点被攻击,包括软件开发涉及到的软硬件开发环境、开发工具、第三方库、软件开发实施等等,软件开发实施的具体过程还包括需求分析、设计、实现和测试等,软件产品在这一环节中形成最终用户可用的形态。软件研发阶段的攻击面包括 IDE 开发工具污染攻击、三方库漏洞和后门攻击、直接源码污染攻击。

二是交付阶段,交付节点被攻击,如软件上线的平台、硬件。用户通过软件官网、公共仓库、在线商店、免费网络下载、购买软件安装光盘等存储介质、资源共享等方式获取到所需软件产品的过程。受攻击对象比如著名的软件下载站、Python 官方镜像源、Github 等。 攻击面如软件存储替换和篡改攻击、传输劫持和捆绑下载攻击。

三是软件使用阶段,使用节点即软硬件的使用者被攻击。使用软硬件产品的整个生命周期,包括产品更新升级、维护等过程。 攻击面包括升级劫持污染攻击、运行环境后门和了漏洞攻击、三方库 0Day 漏洞攻击。

以上是从定义方面,较为宽泛地看传统软件供应链以及一般软件供应链攻击。但随着云原生和开源的发展,一些新的看法与攻击出现了。

开源与云原生时代的软件供应链

前文 John Mark Walker 所说的传统软件供应链,是在对比包含更多开源组件的软件供应链。John Mark Walker 认为,随着开源软件应用在增多,情况已经变得混乱了:未经验证的许可证、未经测试的仓库、以及狂野的开发者,这些要素使得软件供应链看上去似乎不可管理。开源导致至少增加了一个额外的层次:

某个角度看,开源组件插入到产品中,和第三方商业组件插入到产品中,并没有本质差别。但实际上,关于上游开源组件,多数源代码仓库没有任何商业保证。此时要么是建立自己内部的审核代码和应用产品管理流程的方法,或者是靠中间厂商,即采用开源软件的商业发行版,如 RedHat 和 SUSE 提供的 Linux 企业版产品。

与开源密切相关,并改变传统软件供应链的还有云原生。容器概念和 Docker、Kubernetes 等项目的出现,改变了软件的交付方式,进而影响到软件供应链。

阿里技术团队曾总结容器和 Kubernetes 的引入带来的安全软件供应链管理变化:

  • 发布和迭代更加频繁,容器的易变性也使得安全风险稍纵即逝;
  • 更多的不可控三方依赖,一旦一个底层基础镜像有了安全漏洞,会向病毒一样传递到上层;
  • 更大范围的全球快速分发,在分发过程中的攻击也会使得在末端执行的时造成大规模安全风险。

《2020软件供应链报告》中提到的“下一代软件供应链”攻击的变化,也正是基于开源和与原生的发展——下一代软件攻击数量激增的背景是,开源加速了创新,也带来大规模的使用,到2020年,世界各地的开发者对开源软件组件和容器的需求,将超过1.5万亿个。同时,攻击也正在积极针对开源项目。

下一代软件供应链攻击已主动向“上游”感染

供应链成为攻击媒介已经不是新发现了。Symantec 的调查显示,2017年供应链网络攻击激增200%;2018年,CrowdStrike 的供应链安全性调查结果显示,80%的 IT 专业人员认为软件供应链攻击将是企业组织在未来三年中将面临的最大网络威胁之一……

这次的《2020软件供应链报告》提出了“下一代”的软件供应链攻击正在到来,特点是攻击更加主动,波及范围更广。

数据显示,在过去12个月,旨在大举渗透开源的下一代网络攻击数量增加了430%。攻击者正在利用软件供应链达成杠杆和规模效应。同时,下一代的软件供应链攻击更加险恶,因为攻击者不再是等待公开披露的开发源码漏洞,而是主动、积极地将恶意代码注入为全球供应链提供信息的开源项目,通过感染“上游”组件,向“下游”扩散。

出现此种情况的可能原因有三个:

  • 开源项目是协作的,有时难区分良好和恶意的社区成员;
  • 开源项目通常包含来自其他开源项目成百上千的依赖项,依赖项中可能含有已知漏洞;
  • 开源精神是建立在全球社区的“共同信任”之上,这便于攻击者轻松达成目的。

最常见的是类型攻击,这是一种间接攻击向量。此类攻击在搜索流行组件时攻击开发人员,是他们犯一些无辜的错误。如开发人员想要获取“Iodash”源代码,却意外地输入了“Iodahs”,那么他们可能会意外地安装一个名称类似的恶意组件。

另一常见的是恶意代码注入。如今年5月,GitHub 安全博客警告了针对 Apache NetBeans IDE 项目的开源供应链攻击 Octopus Scanner。最终统计显示,有26个开源项目被植入了 Octopus Scanner 后门。一旦感染,恶意程序会寻找用户开发系统上的 NetBeans 项目,然后将恶意负荷嵌入项目文件,每次构建都会执行恶意负荷。

如何使开源软件供应链更可信

事实上,随着软件供应链攻击的增加,企业和开发者也需要做些什么来保障安全,提高软件供应链的可信度。

《2020软件供应链报告》认为,选择开源项目应该是企业软件开发团队的重要战略决策。包括识别模范的开源供应商,具有更新依赖性的项目更加安全。报告建议项目团队应该力争每年至少发布4个版本,并在每个版本中升级至少80%的依赖项,更高频率的依赖更新会带来更高的质量和更安全的代码。

报告还指出,面对更加恶意的软件供应链攻击,防御的速度仍是关键。一直以来,所有开发者和企业都牢记面对恶意攻击时,要积极响应。不过该报告此处尤指开源软件,组织必须建立起一个“快速升级态势”,这样他们就可以通过发现和修复生产应用程序中、脆弱的开源依赖关系,来快速响应新的漏洞披露。

除了报告中提到的“快速升级态势”,态势感知也是近年来常被用于确保网络安全的方式。

“态”强调当前状态,“势”强调未来发展的趋势。网络安全领域的态势感知,最重要的是全局视角提升对威胁的发现识别、理解分析、响应处置。态势感知基于基于环境的、动态、整体地洞悉风险的能力,以大数据为基础,最终是为了决策与行动,是预测能力的落地,也可看做一种“事前”发现的方式。 具体方式包括通过收集云上安全组件信息、关联分析组件提供的海量日志等,全面感知威胁,得出可被理解的安全事件。又或是通过人工智能技术,深度挖掘数据,预测云上资产可能面临的风险。

最后报告再次提及开源及其安全的重要度:10个开源软件下载中有1个是脆弱的,而开源组件占到了现代应用的90%。其研究发现生产力不一定要以降低安全性为代价。在供应端,通过对部分开源项目的研究发现,频繁的代码更新、依赖更新和发布会带来更好的结果,更新越频繁,开源项目通常越安全。

综上,无论是供应端还是需求端,建议都是快速行动,包括快速更新、快速应对。开源或许在某种层面上导致风险更大,但合理利用开源的协同开发,快速发布,也是解决这些风险的绝佳方式。

 

 

(稿源:OSCHINA,封面来自网络)