JFrog 启动 Pyrsia 防范软件供应链攻击

供应链安全现状

供应链安全近年来备受关注。没错,软件漏洞一直是黑客手中阻碍业务、破坏敏感数据并对开源软件造成威胁的关键工具。

 

由于企业依赖过时的工具和人为干预的薄弱做法,许多此类攻击已经显现出来。最好的情况下,企业负责保护业务软件的团队只能通过开源软件中的一些漏洞,来处理对其系统的攻击—— equifax apache struts、Log4j 和 Solarwinds Hack 是一些众所周知的例子。实际上,还有很多没有得到过多关注的漏洞,但最终还是给企业和人们造成了很大的损害。

 

在 JFrog,我们认识到提高开源软件的安全性和信任度对于保护我们的软件开发和供应链至关重要。这是Pyrsia成立的主要原因。 Pyrsia 是一个去中心化的包网络,它通过以下方式为供应链的关键部分提供解决方案:

  1. 通过经过认证和同行验证的构建,为在软件开发中用作依赖项的开源包建立信任。
  2. 提供一个去中心化的包网络,它可以理解包坐标、语义和可发现性,并且即使发生本地中断也能继续工作。

 

如果将开源供应链比作电力输送系统,它将类似于为全球消费者和企业提供分布式电力的电网。 个人、小型企业和大型企业都依赖于从上游生产来源可靠地提供的清洁电力。 电网的分布式特性使得拥有可靠的电源成为可能,从而有效地分配电力生产。 如果没有这个关键的基础设施,就不可能在全球范围内保持生产。

同样,开源软件在现代软件开发的供应链中起着至关重要的作用。 专有软件通常由 90% 或更多的开源依赖项组成,大量使用从一个或多个中央存储库(包括 Maven Central、PyPI、RubyGems、NPM、Docker Hub 等)提供的软件包。 这些上游存储库的中断有可能导致软件供应链中断,从开发人员的生产力到 CI/CD 构建失败再到生产版本的中断。 更糟糕的是,中央存储库中的安全问题可能对下游系统产生毁灭性影响,尤其是在注入恶意程序包的情况下。

 

Pyrsia 指在通过创建一个系统来保护开源依赖项的软件供应链,该系统通过设计来保护开源构建和分发。

 

在包中建立和验证信任

今天,对包的信任基于构建或托管这些包的服务。 每当此类服务出现故障或受到攻击时,都会使下游的整个网络变得不稳定。 要么您无法继续构建和发布软件,要么面临系统带有受损软件包的风险。 我们相信服务提供商会修复并提供安全的软件包。 第三方无法验证软件包的出处和有效性,识别易受攻击的软件包是一个手动过程。 我们 JFrog 的安全漏洞团队已识别出数千个恶意程序包,表明该模型很容易被利用。

 

Pyrsia 通过将自动化应用于构建和验证网络上托管和生成的包的信任来解决这个问题。 Pyrsia 还旨在提供弹性,以防止开发人员在 CI/CD 系统中失去生产力和下游故障,从而延迟软件发布。

 

Pyrsia 共识——它是如何工作的?

Pyrsia 网络在整个网络上进行随机共识。 提交给网络的每个包都是由随机选择的节点构建的,这些节点独立构建和生成输出包。 然后通过这些节点之间的共识来验证结果。 如果验证成功,则将包提交到网络并可供下载和部署。

 

随机选择允许对构建进行独立验证,并提供针对网络攻击的安全网。

Pyrsia的目标

  1. 专注于构建和分发开源代码库——源代码必须在公共位置可用和访问
  2. Pyrsia 软件易于安装和使用,具有一流的命令行界面,使开发人员无需重写现有脚本、docker 文件等即可获得 Pyrsia 的好处。
  3. 有效使用资源来运行 Pyrsia 节点,贡献者可以根据他们的限制将资源专用于网络
  4. 能够脱机工作,指已在本地同步和缓存依赖项
  5. Pyrsia 解决了所有开源软件的以下供应链威胁,如下图所示。

C- 源代码管理后台的修改代码

D – 受损的构建平台

E – 使用错误的依赖项

F – 绕过 CI/CD

G – 受损的软件包回购

H – 使用坏包

Pyrsia 不会尝试:

  1. 重新发明其他开源项目中已经存在的技术和软件。
  2. 投资于签名技术的安全研究以签署软件包。
  3. 支持封闭源项目的类似 Pyrsia 的功能。

目前如何使用 Pyrsia?

Pyrsia 已经开始构建一个 P2P 网络,您可以轻松地将其插入您的 CI 系统。 Pyrsia 目前支持通过 P2P 网络分发 Docker 镜像,并将 Docker Hub 作为受信任的注册表。 有了这个,Pyrsia 能够使您的 CI 系统对可能发生的任何网络故障/分区具有弹性。 此外,您将获得更快下载镜像的好处,因为它们将被缓存在网络(或您附近的节点)上以获得更好的吞吐量。

 

下图显示了 Pyrsia 将启用和支持的设置。 Pyrsia 将提供一种透明地提供经过开源验证的 Docker 镜像的方式。 完成此设置后,您将无需修改 CI 系统。

3 个简单的入门步骤

您可以按照以下 3 个简单步骤开始使用 Pyrsia:

  1. 下载 Pyrsia 的安装程序。(https://pyrsia.io/
  2. 启动所有 Pyrsia 节点并连接到网络
  3. 在 CI 系统上配置您的 Docker 守护程序,以将 Pyrsia 也用作注册表镜像。

详细说明可以在 Pyrsia 网站上找到。

现在你都准备好了!像往常一样继续使用 Docker Pull,现在 Pyrsia 网络上的镜像将由 Pyrsia 节点提供服务。此外,如果镜像未更改,则在后续运行 CI 流时,您将在 Pyrsia 节点上拥有它们,并且还将为您节省到 Docker Hub 的跃点。这将适用于在 Docker Hub 上验证并位于默认命名空间中的所有镜像。

对于所有其他 Docker 命令——由于镜像不在 Pyrsia 网络中,它们将从 Docker Hub 下载(像往常一样),您仍然可以获得与以前相同的体验。

除了 Docker,JFrog 还与 DeployHub、Futurewei、HuaWei 和 Oracle 合作构建 Pyrsia 背后的技术,并在 Pyrsia 网络上运行授权节点。