我正在尝试部署我的项目,突然出现此错误。
npm错误!找不到404:event-stream@3.3.6
答案 0 :(得分:140)
tldr;
圣牛!事实证明,事件流软件包具有一个漏洞,该漏洞使黑客能够窃取比特币。
要修复此问题,您需要更新event-stream
软件包。
node_modules
文件夹。package-lock.json
文件。npm install
。这应该将您的软件包更新为安全版本,您应该一切顺利。
这是NPM博客的官方回复:
有关事件流事件的详细信息这是对 你们中许多人早已意识到的事件流事件 周。 npm立即采取行动以解决运营问题和问题 会影响我们社区的安全,但是我们通常会执行更多 在讨论事件之前进行深入分析-我们知道您去过 等待中。
11月26日上午,npm的安全团队收到了有关 已进入事件流的恶意软件包 npm软件包。对恶意软件进行分类之后,npm Security的响应方式为 从注册表中删除flatmap-stream和event-stream@3.3.6,并 拥有事件流包的所有权,以防止进一步滥用。
恶意软件包为flatmap-stream的0.1.1版。这个 包被添加为事件流包的直接依赖项 由新维护者于2018年9月9日在版本3.3.6中发布。的 事件流包被广泛使用,但恶意代码针对性强 一家开发非常具体的公司的开发人员 环境设置:在任何其他环境中运行有效负载都没有 影响。此特定定位意味着最终,大多数 即使错误安装,开发人员也不会受到影响 恶意模块。
注入的代码针对Copay应用程序。当开发人员在 Copay运行其发布构建脚本之一,结果代码为 在捆绑到应用程序之前进行修改。该代码是 用于从帐户中收集帐户详细信息和私钥 余额超过100比特币或1000比特币现金。
Copay的最初反应是没有包含此内容的版本 恶意代码已公开发布,但现在我们有了 Copay确认“恶意代码已部署在 版本5.0.2到5.1.0。”
攻击该攻击最初是社会工程攻击。的 攻击者冒充维护者,接管了 事件流模块。
技术细节这是我们知道的一些技术细节 关于,对于那些对此感兴趣的人。
注入的代码:
从伪装成测试装置的文件中读取AES加密数据 抓取了导入模块的npm软件包描述, 使用自动设置的环境变量 描述作为解密从服务器提取的大量数据的密钥 伪装的文件解密的数据是模块的一部分,然后 在内存中编译并执行。
该模块执行了以下操作:
从伪装的文件中解密了另一块数据 从第一个解密块到末尾的注释小前缀 第二个解密块执行次要解码任务以进行转换 从无效JS到有效JS的级联代码块(我们相信 这样做是为了逃避动态分析工具的检测) JS处理后的块到存储在依赖项中的文件中 由构建脚本打包:编写的代码块 出来的是实际的恶意代码,旨在在拥有的设备上运行 由Copay的最终用户提供。
此代码将执行以下操作:
检测当前环境:Mobile / Cordova / Electron检查 受害人共付额帐户上的比特币和比特币现金余额 当前余额大于100比特币,或1000比特币现金: 完整收获受害者的帐户数据收获受害者的共付额 私钥将受害者的帐户数据/私钥发送到 收集服务运行在111.90.151.134上。对于自付费用的用户 应用,bitpay建议:“如果您使用的版本是5.0.2到 5.1.0,则不应运行或打开Copay应用。”
对于npm用户,您可以检查您的项目是否包含弱点 通过运行npm audit进行依赖。如果您已经安装了受影响的产品 此事件流的版本,我们建议您更新到更高版本 版本尽快。
答案 1 :(得分:3)
遵循以下方法:
删除node_modules和package_lock.json文件
运行npm list event-stream
答案 2 :(得分:3)
实际上,我们不需要更新所有依赖于event-stream@3.3.6的软件包。
您可以打开package-lock.json
,删除所有事件流引用,然后再次调用npm install
。会更快。
之后,npm shrinkwrap && mv npm-shrinwrap.json package-lock.json
应该仅更新事件流引用,而不是整个文件
答案 3 :(得分:3)
如评论中所述,根本问题是package-lock.json
(锁定文件)包含不赞成使用的软件包。删除锁定文件并重新安装依赖项可以解决此问题。
最快的方法是以下两个步骤:
package-lock.json
文件npm i
(或npm install
)以重新安装依赖项答案 4 :(得分:2)
我已将package.json中的npm-run-all从4.1.3更新为4.1.5(在锁定文件事件流中删除) 然后安装npm。
答案 5 :(得分:1)
我可以通过以下步骤解决此问题:
event-stream
叶的根,例如:
45 silly saveTree +-- nodemon@1.18.4
45 silly saveTree | +-- chokidar@2.0.4
45 silly saveTree | +-- pstree.remy@1.1.0
45 silly saveTree | | `-- ps-tree@1.2.0
45 silly saveTree | | `-- event-stream@3.3.6
45 silly saveTree | | +-- duplexer@0.1.1
45 silly saveTree | | +-- from@0.1.7
45 silly saveTree | | +-- pause-stream@0.0.11
45 silly saveTree | | `-- split@0.3.3