プロジェクトをデプロイしようとしていますが、突然このエラーが発生します。
npm ERR!404が見つかりません:event-stream@3.3.6
プロジェクトをデプロイしようとしていますが、突然このエラーが発生します。
npm ERR!404が見つかりません:event-stream@3.3.6
回答:
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の開発者がリリースビルドスクリプトの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を実行することで、プロジェクトに脆弱な依存関係が含まれているかどうかを確認できます。このイベントストリームの影響を受けるバージョンをインストールした場合は、できるだけ早く新しいバージョンに更新することをお勧めします。
npm list event-stream
、トップレベルのパッケージを実行して更新します
実際には、event-stream @ 3.3.6に依存するすべてのパッケージを更新する必要はありません。
を開き、package-lock.json
すべてのイベントストリーム参照を削除して、npm install
再度呼び出すことができます。それはより速くなります。
その後、npm shrinkwrap && mv npm-shrinwrap.json package-lock.json
ファイル全体ではなく、イベントストリーム参照のみを更新する必要があります
以下の方法に従ってください:
node_modulesおよびpackage_lock.jsonファイルを削除します
npm listevent-streamを実行します
次の手順でこの問題を解決します。
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
package.jsonのnpm-run-allを4.1.3から4.1.5に更新しました(ロックファイルイベントストリームで削除します)。次にnpmをインストールします。