在软件供应链攻击中,恶意软件包是一个日益严重的威胁
恶意软件包系列1,共4个

欢迎来到第一篇文章在针对DevOps和DevSecOps社区的恶意软件包系列。本技术系列将重点介绍各种恶意软件包及其对软件供应链的影响。
我们将在每篇文章中更深入地研究恶意软件包,包括
- 定义软件供应链攻击,并了解恶意软件包在其中扮演的关键角色(你在这里)
- 分析真实世界的感染方法攻击者使用这些工具来传播恶意软件包,其中包括JFrog安全研究团队发现的攻击示例
- 了解恶意软件包中使用的标准有效载荷以及攻击者如何通过各种现实场景执行有效负载来满足他们的需求
- 讨论如何避免和检测恶意包攻击者使用哪些混淆技术来隐藏恶意代码
开始吧。让我们来讨论一下软件供应链中的恶意软件包。
什么是软件供应链攻击,其固有的安全风险是什么?
在软件供应链攻击中,攻击者将故意的漏洞、恶意代码或整个恶意组件塞进所提供的可信软件或硬件中并在硬件或软件供应链中消耗。
现代软件开发涉及到将第三方软件集成到企业应用程序中。根据2021年Veracode软件安全状态报告显示,用Java编写的典型应用程序的97%是由开源库组成的。这一统计数据表明,只有3%的Java代码是原创的,显示出今天的深度和广度第三方库和开源代码。
这个实践从本质上建立了软件供应链中各方之间的信任链。但是,实际上,这种做法也需要风险,因为第三方软件包和开源软件包可能包含通过软件供应链传递的漏洞或恶意代码,从而影响使用这些漏洞或恶意软件包的所有应用程序。
软件供应链中存在哪些类型的威胁?
有三个软件供应链安全威胁(图1.1)。
前两个威胁显示了有意或无意的软件漏洞。这些漏洞通常指的是软件缺陷,每个缺陷通常被分配一个公共漏洞和暴露(CVE)标识符,当它被公开和发布时。
第三个软件供应链威胁是恶意组件或软件包。与需要利用的漏洞不同,这种威胁包括实际的恶意代码,在使用时执行不需要的操作和恶意活动。当针对此类威胁披露危险时,通常不会分配CVE。在被报告为恶意后,整个包或包的特定版本将从包存储库(例如PyPi或NPM)中删除。由于缺乏针对恶意包名称和版本的识别机制,开发人员和安全涉众很难对其进行跟踪。我们将在本博客系列的后续文章中讨论克服这一挑战的解决方案。
以下是两个现实世界的例子:
- 无意的Bug:臭名昭著就是一个很好的例子Log4Shell脆弱性在2021年12月震惊了世界。Log4j包被Java项目高度使用,并影响了许多企业应用程序和云服务,如Apache Struts、Apache Solr、Apache Druid等。
- 故意的Bug:在2020年,一个故意的漏洞注入了一个后门SolarWinds“猎户座软件平台。该软件的后门版本被下载了大约1.8万次,并积极影响了大约100家不同的公司。
如果你想知道现实生活中的恶意软件包的例子,请坚持下去,因为我们将在下一周的“恶意软件包”系列文章中更深入地了解这种特殊的威胁。
攻击者可以利用上述威胁进行实际攻击。第三方代码的非故意漏洞也可以被视为供应链攻击(如广泛利用的Log4Shell漏洞,它影响了许多企业组织)。尽管如此,保守的软件供应链攻击术语通常是指通过植入恶意代码或故意植入漏洞来故意破坏供应链,如上面的两个示例所示。因此,通常,虽然无意的漏洞被认为是对软件供应链安全的威胁,但在讨论攻击供应链时,它超出了范围。
为什么攻击者要攻击软件供应链?
攻击者攻击软件供应链有两个原因。
首先,从技术角度来看,如果您查看此方法的本质,就会发现这种类型的攻击没有涉及特定目标。因此,例如,当您通过感染单个软件包来攻击供应链时,您可以攻击依赖于该软件包的所有软件以及使用该特定受感染依赖项的应用程序的所有最终消费者。攻击者会选择软件供应链方法,因为攻击的分布潜力很大。
攻击者利用软件供应链的第二个原因是,与我们在过去20年和30年看到的经典目标攻击(攻击者专注于利用漏洞)相比,他们需要在软件供应链攻击上投入很少的精力。在针对标准目标的攻击中,攻击者必须投入大量的时间和金钱来攻击单个目标。当目标是已知的软件平台时,这种攻击变得更加复杂,因为与许多相对较小的软件包相比,它是高度维护和安全的。
攻击者需要很高的技术才能进行有针对性的攻击,因为它本质上涉及到找到一个漏洞、开发一个有效的漏洞,或者为一个漏洞付费。
看看下面Zerodium的价目表;一个漏洞获取平台。
上表显示,一个远程代码执行漏洞的成本可能高达100万美元,其中针对Windows的零点击RCE漏洞是最昂贵的。该表显示了利用漏洞时的复杂性和高赏金/回报。
当将这种努力与攻击恶意开源软件包进行比较时,选择是无穷无尽的,因为那里有成千上万的软件包。因此,攻击者只需找到单个包进行攻击或发布单个恶意软件包,就可以滥用供应链中各方之间的信任,使这种攻击方法有效。在下一篇博客文章中,我们将了解恶意开源软件包攻击的原因和容易程度。
流行的套餐包括NPM的伪造和颜色对于碰巧是这个包的供应链的一部分的大型消费者社区来说,游戏就结束了。正如我们今年早些时候发表的,有些包可以针对大型企业解决方案的用户。
敬请期待“恶意软件包”的下一部分博客系列,我们将分析攻击者用来传播恶意软件包的真实感染方法。在那篇文章中,我们将提供JFrog安全研究团队发现的攻击示例。在你离开之前,问问你的朋友我该如何防御软件供应链攻击和恶意软件包?
想了解更多?注册一个即将到来的JFrog网络研讨会。
这个教育系列是根据网络研讨会改编的识别和避免恶意软件包,展示了目前在PyPI (Python)和npm (Node.js)包库中流行的不同类型的恶意包。