区块链技术如何修复Node.js 生态系统

栏目: Node.js · 发布时间: 7年前

内容简介:对于所有从事Web或Node应用的人而言,噩梦可能正在唤醒我们:媒体迅速报道了这件事,现在也出现了关于密码货币和安全的大规模丑闻,而JavaScript则是最好的处方。而且不止这些:这个丑闻从根本上合法地质疑了我们用Node.js构建(开源)软件的方式。

对于所有从事Web或Node应用的人而言,噩梦可能正在唤醒我们:

区块链技术如何修复Node.js 生态系统

媒体迅速报道了这件事,现在也出现了关于密码货币和安全的大规模丑闻,而JavaScript则是最好的处方。而且不止这些:这个丑闻从根本上合法地质疑了我们用Node.js构建(开源)软件的方式。

NPM模块应该是多重签名的。而证书和信任模式应该是在区块链上完成的。开源开发者可签署package,并根据他们对付费软件的贡献来接收共享。这可以通过密码支付和智能合约来自动实现。相比发布权限,新的维护者 = 潜在黑客,只能被授予相对签名权限。模块管理器中的自动签名和验证检查,可以确定未知和不可信的新签名,并根据规则和各个威胁模块接受或拒绝更新。然后可通过更有针对性的方式审核这些模块。

免责声明:本文意见仅代表作者自己。

那到底发生了什么?

我们在GitHub和NPM上的 event-stream存储库 中找到答案:

7年前,开发者dominictarr(好意)创建了一个名为“event-stream”的NPM模块,这是一个易于创建和使用stream的 工具 包。该模块非常成功,其每周的下载量约为200万。

区块链技术如何修复Node.js 生态系统

在大约两个月后(经历了82个版本的更新),4.0.1 版本的模块被发布了。但是,这次是一个名为@ right9ctrl的黑客发布了它,而不是dominictarr。并且这个版本模块的目的并不是轻松创建和使用stream,而是窃取用户的密码货币。并且因为没有人会自愿使用这样的模块,所以他们对代码进行加密处理,并使用event-stream模块的品牌,将恶意代码隐藏到数百万个其它项目当中。

那么他们是如何进入官方NPM账户的呢?他们入侵了账户吗?他们是否使用了社会工程,他们是否胁迫了dominictarr?还是他是在枪口下被迫交出凭证的?

区块链技术如何修复Node.js 生态系统 并没有,黑客只是通过电子邮件进行了请求,显然,这已经足以获得每周200万(或每年1.12亿)次安装的完全发布权!

很多开发者会是鲁莽的,他们把用户置于危险之中,人们可能因此已经或将会损失他们的资金。

区块链技术如何修复Node.js 生态系统

面对来自外部的巨大压力,最初的开发者两天前发布了一份 官方声明 ,陈述了一些非常有效的观点:

嗨,大家好,这不仅仅是一件小事,在您的依赖树中可能还有很多其它模块,这些模块现在成了作者的负担。我不是为了利他主义动机而创建的代码,我只是为了乐趣而做的这件事。[…]

如果它变得不再有趣了,那么维护一个流行的package实际上什么也得不到。[…] 所以现在,我们正处在一个奇怪的山谷,那里有一大堆依赖关系,这些依赖关系被失去兴趣的人所“维护”着,或者甚至他已经耗尽了兴趣,并且连他们自己都不再去使用。

我看到了这个问题的两个强有力的解决方案…… 1、支付维护费! 2、当你依赖某件事时,你应该参与维护它。

开源代码

我还没见到有哪个行业能够像软件行业一样,其中有很多工作是免费的,开源开发者们经常会这样做,很多只是为了“乐趣”,或者他们想要得到“反馈”,因为他们知道如果没有开源软件,我们就无法实现那么多的进步。然而,我们对这些项目的责任和期望与付费软件却是相同的。开发人员和维护人员经常因“不做”工作或没有“及时”回应,而受到骚扰。但是,我们忘记了大多数开发者都是按照自己的时间表来工作的,如果你有一份主业,并且希望和家人一起生活,或者对编代码并不是那么热衷,那么“及时”反馈根本就是一种奢望。人们常常忘记开发者不欠任何人任何东西。

维护是一个巨大的负担,这就是在付费软件行业中通过维护赚取大量资金的原因。但我们忘记了 npm install cat-ascii-faces --save 并不包含终身维修服务这种要求。

一旦使用统计数字或付款下降,就很容易造成项目的停止。那些已停产的项目,正在成为一个大规款的安全问题,现在应该让每个人都清楚。或者引用Electron核心开发人员之一Paul Betts的话就是:

区块链技术如何修复Node.js 生态系统

想要进行正确的更新,是极其困难的,而具有讽刺意味的是,这些天用于构建最流行代码编辑器以及密码钱包的Electron框架,现在存在着大量问题,例如具有公开记录长达一年之久的Chromium漏洞。很多依赖Electron 的应用,致使数百万用户面临风险。但即使你经常更新自己的软件(正如你希望的那样!),是什么阻止恶意NPM程序包偷偷潜入应用的代码库?我还没有检查它,但如果event-stream 进入了非常流行的应用,例如VS Code,它可以很容易地升级到相同的完整远程代码执行(RCE)攻击。拥有完整的主机系统,就好像黑客正坐在它前面,他可以完全访问键盘、鼠标、文件系统、相机…?攻击场景不仅仅限于从钱包从窃取密码货币。

NPM模块安全性

这个月初,我在以太坊 Devcon IV 大会上就浏览器和钱包安全性问题发表了演讲。其中有一张演讲幻灯片,它讨论了过去基于Electron应用的攻击向量以及成功的攻击案例。

区块链技术如何修复Node.js 生态系统

这张幻灯片基于Luca Carettoni令人敬畏的黑帽演示“ Electronegativity ”和威胁模型:

区块链技术如何修复Node.js 生态系统

NPM模块打开了一个巨大的攻击面,在3周前,我就向听众进行了警告,他们不知道在当时正在发生另一起攻击。NPM 或依赖项安全性对于Electron或Node.js而言,并不是一个特定的问题(即使那里会更糟糕)。它也不是新的或未知的,不幸的是,它也不会被新的审计特性所解决。而且,在GitHub上进行更好的AV集成或扫描,或者AI或漏洞检查和标记,并不能解决此问题。尽管这些都是巨大的进步,它表明我们最终可以清醒过来,并且更加意识到我们面临的安全问题。

那么,我们怎样才能修复我们的生态系统呢?

在dominictarr发布的声明中,他写道:

“开源是由共享驱动的!这很棒!在比特币流行之前,这种方式就工作得很好了。”

有趣的是,我认为区块链技术并不是一个问题,而是一个解决方案,我们需要两件事来创造一个更好的生态系统:

  1. 我们需要一种更简单的方法,来根据某些规则自动向开源开发人员进行支付。
  2. 代码和模块需要进行多重签名,并且证书应该更便宜且易于验证。

传统上,这两件事都是很难的,但我们几乎可通过“区块链技术”的最新进展来免费获得到它们。

那么,我们如何用区块链技术来避免这些场景呢?

比方说,我们有一个项目,它使用了开源模块,并使用密码货币作为应用内置支付方式。

我们的依赖项之一可能变成一个恶意package,就像event-stream事件中看到的那样。但是,原开发人员不给予新合作者完全维护或完全发布权限,而是给予新维护者或CI系统仅签署权限。所以新开发者会在他们发布的版本上签名,而原作者经过仔细的审查后,会附签声明,表示他检查并批准了这些更改。

【随着每次发布和附加签名,新作者自己的签名当然会获得更多的信任。】

如果稍后有人收到使用此模块软件的付款,那么在运行环境中可能有一些逻辑,这些逻辑基于此开源代码的影响或贡献,将自动把每笔付款的一部分资金分发给模块作者,而每年1.12亿次下载,足以积累成一笔巨大的财富,并实际鼓励作者维护流行和有用的项目。

虽然这听起来有点未来主义,但今天我们实际上可能已经拥有了,我们应该尽快到达那里。

其他签署模块的项目已开始基于PGP密钥,并且采用此标准,听起来是符合逻辑的下一步骤,该标准在其他软件领域已经是一种常见做法。

我敢肯定会有更多的改进方案,而签名和支付有望很快成为普遍现象,并帮助生态系统创建更高质量的代码,鼓励更多的开源开发人员做出贡献,因为我们非常需要它们。


以上所述就是小编给大家介绍的《区块链技术如何修复Node.js 生态系统》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web Data Mining

Web Data Mining

Bing Liu / Springer / 2011-6-26 / CAD 61.50

Web mining aims to discover useful information and knowledge from Web hyperlinks, page contents, and usage data. Although Web mining uses many conventional data mining techniques, it is not purely an ......一起来看看 《Web Data Mining》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具