npm ERR!找不到404:event-stream@3.3.6

时间:2018-12-02 07:13:54

标签: node.js npm

我正在尝试部署我的项目,突然出现此错误。

  

npm错误!找不到404:event-stream@3.3.6

6 个答案:

答案 0 :(得分:140)

  

tldr;

     

圣牛!事实证明,事件流软件包具有一个漏洞,该漏洞使黑客能够窃取比特币。

要修复此问题,您需要更新event-stream软件包。

  1. 删除node_modules文件夹。
  2. 删除package-lock.json文件。
  3. 运行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)

遵循以下方法:

  1. 删除node_modules和package_lock.json文件

  2. 运行npm list event-stream

  3. 运行npm审核
  4. 运行npm缓存验证
  5. 运行npm install
  6. 运行git add。 (添加所需文件)
  7. 运行git commit(提交更改)
  8. 运行git push(推送您的代码)

答案 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)

我可以通过以下步骤解决此问题:

  1. 在/node_cache/_logs/xxxx-xx-xxx-debug.log中打开此错误的最新日志
  2. 找出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

  1. 在这种情况下,根目录为nodemon,因此您可以通过以下方式修复:npm install nodemon@1.18.4
  2. npm立即成功安装