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软件,具有一流的命令行界面,使开发人员无需重写现有脚本,docker文件等就能获得Pyrsia的好处。
- 高效利用资源运行Pyrsia节点,其中2022世界杯阿根廷预选赛赛程贡献者能够根据自己的约束将资源分配到网络
- 能够离线工作,其中依赖关系已经在本地同步和缓存
- Pyrsia解决了以下所有开源软件的供应链威胁,如下图所示。
- C-源代码控制之后修改的代码
- D -折衷构建平台
- E -使用一个坏的依赖
- F -绕过CI/CD
- G -折衷包回购
- H -使用不好的包装
皮里斯亚不试图:
- 重新发明已经存在于其他开源项目中的技术和软件。
- 投资签名技术的安全研究,为软件包签名。
- 为闭源项目支持类似pyrsia的功能。
我今天怎么用Pyrsia ?
Pyrsia已经开始构建一个可以轻松插入CI系统的P2P网络。Pyrsia目前支持通过Docker Hub作为可信注册中心在P2P网络上分发Docker映像。有了这些,Pyrsia可以使CI系统对可能发生的任何网络故障/分区具有弹性。此外,您还可以更快地下载映像,因为它们将缓存在网络(或您附近的节点)上,以获得更好的吞吐量。
下图显示了Pyrsia将启用和支持的设置。Pyrsia将提供一种透明地提供经过验证的开源Docker映像的方法。一旦你有了这个设置,你就不需要修改CI系统了。
Pyrsia设置
3个简单的步骤开始
你可以通过以下3个简单的步骤开始使用Pyrsia:
- 下载Pyrsia的安装程序。
- 启动所有Pyrsia节点并连接到网络
- 在CI系统上配置docker守护进程,也使用Pyrsia作为注册表镜像。
详细说明可在Pyrsia网站.
现在你都准备好了!继续像往常一样使用docker pull,现在Pyrsia网络上的图像将由Pyrsia节点提供服务。同样,在CI流的后续运行中,如果映像没有改变,您将在Pyrsia节点上保存它们,并且还将节省跳转到Docker Hub的时间。这将适用于在dockerhub上验证并位于默认名称空间中的所有图像。
对于所有其他Docker命令——由于映像不在Pyrsia网络中,它们将从Docker Hub下载(像往常一样),您仍然会有和以前一样的体验。
参考: