软件供应链攻击(依赖关系混淆攻击)正在破坏你的系统安全

一位安全研究人员设法破坏了35家以上高科技公司的系统,这被称为一种新颖的软件供应链攻击(依赖关系混淆攻击)。通过利用这种称为依赖性混淆或命名空间混淆的攻击方式尤其是npm Registry更容易受到供应链命名空间混淆的影响。

么是依赖关系混淆

我们先来列举一个例子:

想象一下,我说过,您正在从事一个非常秘密的项目,名为Secret Almo。组件坐标为org.acme:secret-almo:1.0,并且您不希望竞争对手知道它。但是,如果您的一位同事不小心将org.acme:secret-almo:1.1或任何不存在的版本添加为该库的依赖项,并运行了构建该怎么办?这是将要发生的事情:


[if !supportLists]l [endif]请求到达私服的组仓库(group),首先检查本地资源库。如果您的同事没有犯错并且使用1.0作为版本,则解决方案将在那里停止,并且将检索到正确的工件。但是找不到1.1,因此公司的依赖私服会继续寻找。

[if !supportLists]l [endif]私服会一对一地查看作为组仓库(group)一部分的远程存储库(proxy),将包含您的秘密项目名称的URL请求发送到外部第三方存储库!

在这种情况下,依赖性混淆指的是您的开发环境无法区分软件构建中依赖的组件是内部私有创建的程序包,还是公用软件存储库中同名的程序包。

如何利用依赖关系混淆进行攻击呢

我们继续举个例子:

让我们回到上一个场景,有关Secret Almo的工作仍在进行中。让我们看一下项目的另一个组件, almo-common-utils,它是用Node编写的,是web应用程序的所有依赖组件中一部分。而私服组仓库(group),包括代理一组远程仓库(代理npm官方注册表),本地(用于内部共享模块)。

考虑以下:

[if !supportLists]1. [endif]npm Registry是一个集市。任何人都可以在上面发布一个未知范围NPM组件,并为所欲为的调用,即“almo-common-utils”。

[if !supportLists]2. [endif]npm注册表中没有名为“ almo-common-utils”的软件包(好吧,因为它是一个内部公司库),因此没有名称冲突。

[if !supportLists]3. [endif]大多数npm依赖项都使用版本范围声明来请求最新的兼容版本

攻击者想要攻击不受保护的组织的唯一信息是almo-common-utils的存在,使用中的该库的主要版本(假设他们知道版本3在组织中被广泛使用),并且知道其中的源代码。

他们可以克隆和修改源代码,将任何恶意软件嵌入其中,但仍保持与原始代码的兼容性,并将其作为secret-almo:3.99.99 上载到npm Registry,没有人能阻止它们这么做。

现在让我们看看当请求secret-almo:^ 3.0.0时私服的工作模式:

[if !supportLists]1. [endif]在本地存储库中寻找最新的兼容机密Almo。发现3.2.4。

[if !supportLists]2. [endif]在npm-registry代理远程存储库中查找最新的兼容secret-almo。发现3.99.99。

[if !supportLists]3. [endif]来自npm注册表的虚假secret-almo获胜,供应链被劫持


如何解决依赖混淆攻击呢

使用Artifactory,在您的远程存储库上使用排除模式!

您知道在npm Registry中永远找不到almo-common-utils的方法吗?告诉你的仓库管理员!在排除模式中添加您的私有依赖项,并保护自己免受严重供应链攻击。如此简单,以至于几乎可以忽略不计。

同时也可以在本地仓库中排除掉第三方组件的坐标,避免内部私人串改第三方的可信版本

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • NPM 使用介绍 NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用...
    催化剂阅读 365评论 0 0
  • [if !supportLists]1. [endif]今日大纲 [if !supportLists]1、 [en...
    我也是醉了Ryan阅读 854评论 0 0
  • 背景介绍 在现在比较常见的软件架构中 SSM 架构在一些项目中应用的非常广泛,但是仔细想想这种架构的开发方式实际上...
    RobynnD阅读 684评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,457评论 19 139
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    余生动听阅读 10,781评论 0 11

友情链接更多精彩内容