npm ERR!404が見つかりません:event-stream@3.3.6


85

プロジェクトをデプロイしようとしていますが、突然このエラーが発生します。

npm ERR!404が見つかりません:event-stream@3.3.6


1
npmはこのパッケージを非推奨にしました。github.com/webpack/webpack-cli/issues/698を
Prayag C. Patel

1
質問はメタで議論されました:meta.stackoverflow.com/questions/378071/…–
Roman Pokrovskij

package-lock.jsonファイルを削除してからnpminstallを削除するだけで問題なく動作します。
ジテンドラパワール

回答:


189

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の開発者がリリースビルドスクリプトの1つを実行すると、結果のコードはアプリケーションにバンドルされる前に変更されます。このコードは、残高が100ビットコインまたは1000ビットコインキャッシュを超えるアカウントからアカウントの詳細と秘密鍵を収集するように設計されています。

Copayの最初の応答は、この悪意のあるコードを含むビルドは一般にリリースされなかったというものでしたが、「悪意のあるコードはバージョン5.0.2から5.1.0にデプロイされた」という確認がCopayから得られました。

攻撃この攻撃は、ソーシャルエンジニアリング攻撃として始まりました。攻撃者は、メンテナを装って、イベントストリームモジュールのメンテナシップを引き継ぎました。

技術的な詳細これは、これに興味のある方のために、私たちが知っているいくつかの技術的な詳細です。

インジェクションされたコード:

テストフィクスチャを装ったファイルからAES暗号化データを読み込む自動的に設定された環境変数を使用して、インポートしたモジュールのnpmパッケージの説明を取得しました。パッケージの説明をキーとして使用して、偽装したファイルから取得したデータのチャンクを復号化しました。復号化されたデータはモジュールの一部であり、モジュールはメモリにコンパイルされて実行されました。

このモジュールは、次のアクションを実行しました。

偽装ファイルから別のデータチャンクを復号化最初の復号化チャンクから2番目の復号化チャンクの終わりに小さなコメント付きプレフィックスを連結マイナーデコードタスクを実行して、連結されたコードブロックを無効なJSから有効なJSに変換しました(これは動的分析ツールによる検出を回避するために行われます)この処理されたJSのブロックを、ビルドスクリプトによってパッケージ化される依存関係に格納されたファイルに書き出しました。書き出されたコードのチャンクは、実行を目的とした実際の悪意のあるコードでした。 Copayのエンドユーザーが所有するデバイス。

このコードは次のことを行います。

現在の環境を検出する:モバイル/コルドバ/電子被害者の自己負担口座のビットコインとビットコインキャッシュの残高を確認する現在の残高が100ビットコインまたは1000ビットコインキャッシュを超えている場合:被害者のアカウントデータを完全に収集する被害者の自己負担秘密鍵を収集する被害者のアカウントデータ/秘密鍵を111.90.151.134で実行されている収集サービスに送信します。Copayアプリのユーザーの場合、bitpayは「5.0.2から5.1.0までのバージョンを使用している場合は、Copayアプリを実行したり開いたりしないでください」と推奨しています。

npmユーザーの場合、npm auditを実行することで、プロジェクトに脆弱な依存関係が含まれているかどうかを確認できます。このイベントストリームの影響を受けるバージョンをインストールした場合は、できるだけ早く新しいバージョンに更新することをお勧めします。


7
またはnpm list event-stream、トップレベルのパッケージを実行して更新します
Phil

4
パッケージロックを削除するのは悪い考えのように思えます。NPMブログ投稿へのリンクを共有してください。
pronebird

ワオ。引用した記事へのリンクはありますか?EDIT -それを見つけた:blog.npmjs.org/post/180565383195/...
friederbluemle

7

実際には、event-stream @ 3.3.6に依存するすべてのパッケージを更新する必要はありません。

を開き、package-lock.jsonすべてのイベントストリーム参照を削除して、npm install再度呼び出すことができます。それはより速くなります。

その後、npm shrinkwrap && mv npm-shrinwrap.json package-lock.jsonファイル全体ではなく、イベントストリーム参照のみを更新する必要があります


4

以下の方法に従ってください:

  1. node_modulesおよびpackage_lock.jsonファイルを削除します

  2. npm listevent-streamを実行します

  3. npm監査を実行する
  4. npm cacheverifyを実行します
  5. npminstallを実行します
  6. gitaddを実行します。(必要なファイルを追加)
  7. git commitを実行します(変更をコミットします)
  8. git pushを実行します(コードをプッシュします)

3

次の手順でこの問題を解決します。

  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であるため、次の方法で修正できます。npminstall nodemon@1.18.4
  2. npmは今すぐ正常にインストールされます

2

package.jsonのnpm-run-allを4.1.3から4.1.5に更新しました(ロックファイルイベントストリームで削除します)。次にnpmをインストールします。


2

コメントで述べたように、根本的な問題はpackage-lock.json(ロックファイル)に非推奨のパッケージが含まれていることでした。ロックファイルを削除して依存関係を再インストールすると、問題が解決しました。

これを行う最も速い方法は、次の2つのステップです。

  • package-lock.jsonファイルを削除します
  • 依存関係を再インストールするには、npm i(またはnpm install)と入力します
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.