Pyrsia:分散的包网络,确保开源供应链的安全
加快构建、共享和使用开源软件包的速度

供应链安全现状
近年来,供应链安全问题受到了广泛关注。这是正确的。软件漏洞利用攻击已经成为黑客手中阻碍业务、泄露敏感数据的关键工具,并引起了人们对开源软件的普遍恐惧。
这些攻击中有许多是由于依赖过时工具和人为干预的薄弱做法而表现出来的。在最好的情况下,负责保护业务软件的团队只能通过开源软件中的一些漏洞来处理对其系统的攻击Equifax apache struts,Log4j和Solarwinds黑客有几个众所周知的例子。在现实中,还有更多的问题没有得到如此多的关注,但最终还是给企业和人民造成了很大的损害。
在JFrog,我们认识到提高开源软件的安全性和信任度对于确保我们的软件开发和供应链的安全至关重要。这就是波斯建立的主要原因。Pyrsia是一个分散的包裹网络,通过以下方式为供应链的关键部分提供解决方案:
- 通过认证和对等验证的构建,为软件开发中作为依赖项使用的开源包构建信任。
- 提供一个去中心化的包网络,它理解包的坐标、语义和可发现性,即使出现局部中断也能继续工作。
如果将开源供应链比作电力输送系统,它就类似于向全球消费者和企业提供分布式电力的电网。个人、小型企业和企业都依赖于上游生产来源可靠的清洁电力供应。电网的分布式特性使得可靠的电力来源能够有效地分配电力生产。如果没有这些关键的基础设施,就不可能保持全球生产的正常运行。

同样,开源软件在现代软件开发的供应链中扮演着至关重要的角色。专有软件通常由90%或更多的开源依赖组成,大量使用来自一个或多个中央存储库的包,包括Maven central、PyPI、RubyGems、NPM、Docker Hub等。这些上游存储库中的中断有可能在软件供应链中产生中断,从开发人员的生产力到CI/CD构建失败,再到生产版本的中断。更糟糕的是,中央存储库中的安全问题可能对下游系统产生破坏性影响,特别是在恶意包被注入的地方。
Pyrsia旨在通过创建一个系统来确保开源构建和分发的安全,从而确保开源依赖的软件供应链的安全。
在包中建立和验证信任
今天,对包的信任是基于构建和/或托管这些包的服务。每当这样的服务出现故障或受到攻击时,它就会使整个网络下游不稳定。您要么无法继续构建和发布软件,要么面临带有受损包的系统的风险。我们相信服务提供商能够修复并提供安全的软件包。软件包的来源和有效性无法由第三方验证,识别易受攻击的软件包是一个手动过程。我们JFrog的安全漏洞团队已经发现数以千计的恶意软件包表明这个模型很容易被利用。
Pyrsia通过在网络上托管和生成的包中应用自动化来构建和验证信任,从而解决了这个问题。Pyrsia还旨在提供弹性,防止开发人员在CI/CD系统中失去生产力和延迟软件发布的下游故障。
Pyrsia共识——它是如何运作的?
Pyrsia网络在整个网络中随机达成共识。提交给网络的每个包都是由随机选择的节点构建的,这些节点独立地构建和生成输出包。然后通过这些节点之间的共识来验证结果。如果验证成功,则将包提交到网络并可供下载和部署。
随机选择允许对构建进行独立验证,还提供了一个抵御网络攻击的安全网。
Pyrsia -分散包网络
Pyrsia的目标
- 专注于构建和分发开源代码库——源代码必须在公共位置可用和可访问
- 易于安装和使用Pyrsia软件,具有一流的命令行界面,使开发人员无需重写现有的脚本,docker文件等即可获得Pyrsia的好处。
- 运行Pyrsia节点时资源的有效使用,2022世界杯阿根廷预选赛赛程贡献者可以根据他们的约束将资源分配给网络
- 能够在依赖项先前已在本地同步和缓存的情况下离线工作
- 如下图所示,Pyrsia解决了所有开源软件的以下供应链威胁。
- C-源代码控制后修改的代码
- D -折衷构建平台
- E -使用糟糕的依赖
- F -旁路CI/CD
- 妥协包回购
- H -使用劣质包装
Pyrsia并没有试图:
- 重新发明已经存在于其他开源项目中的技术和软件。
- 投资于对软件包签名技术的安全研究。
- 支持类似pyrsia的闭源项目功能。
今天我如何使用Pyrsia ?
Pyrsia已经开始构建一个P2P网络,您可以轻松地将其插入CI系统。Pyrsia目前支持在P2P网络上分发Docker镜像,Docker Hub作为受信任的注册表。有了这一点,Pyrsia使您能够使CI系统对可能发生的任何网络故障/分区具有弹性。此外,您将获得更快下载图像的好处,因为它们将缓存在网络(或您附近的节点)上,以获得更好的吞吐量。
下图显示了Pyrsia将启用和支持的设置。Pyrsia将提供一种透明地提供经过开源验证的Docker镜像的方式。一旦设置完成,就不需要修改CI系统了。
Pyrsia的设置
3个简单的入门步骤
你可以开始与Pyrsia以下3个简单的步骤:
- 下载Pyrsia的安装程序。
- 启动所有Pyrsia节点并连接到网络
- 在CI系统上配置docker守护进程,使其也使用Pyrsia作为注册表镜像。
详细说明可在Pyrsia网站.
现在你都准备好了!像往常一样继续使用docker pull,现在Pyrsia网络上的图像将由Pyrsia节点提供服务。此外,在CI流的后续运行中,如果映像未更改,则可以将它们放在Pyrsia节点上,并且还可以节省到Docker Hub的跳转。这将适用于在dockerhub上验证并位于默认命名空间中的所有映像。
对于所有其他Docker命令-由于图像不在Pyrsia网络中,它们将从Docker Hub(像往常一样)下载,您将仍然拥有与以前相同的体验。
参考: