purescriptnpmインストーラーで悪意のあるコードが見つかりました

npm ピュアスクリプト

何日か前に PureScriptインストーラーとのnpmパッケージの依存関係で悪意のあるコードが検出されました、purescriptパッケージをインストールしようとすると表示されます。

悪質なコード load-from-cwd-or-npm依存関係を介して埋め込まれます スピードマップの依存関係。 最近までこのnpmパッケージのメンテナンスに従事していたが、パッケージが他のメンテナーに送信された、PureScriptインストーラーを使用したnpmパッケージの元の作成者は、これらの依存関係を持つパッケージに付随する責任があることに注意してください。

問題について

この問題は、パッケージの新しいアナリストのXNUMX人によって発見されました、npm purescriptパッケージの元の作者との多くの意見の不一致と厄介な議論の後に、保守権が譲渡されました。

新しいメンテナ PureScriptコンパイラを担当し、 彼らは、インストーラーを含むNPMパッケージは、プロジェクト外の開発者ではなく、メンテナー自身が修復する必要があると主張しました。

PureScriptインストーラーを使用したnpmパッケージの作成者は長い間同意しませんでしたが、その後あきらめてリポジトリへのアクセスを許可しました。 しかし、いくつかの依存関係は彼の管理下に置かれました。

先週、PureScript0.13.2コンパイラのリリースが発表されました 新しいメンテナは、インストーラーを使用してnpmパッケージの対応する更新を準備しました。 悪意のあるコードが検出された。

悪意のあるコードは、最初にnpmパッケージ「load-from-cwd-or-npm」に挿入されました バージョン3.0.2で、次にバージョン1.0.3からのレートマップパッケージで。 過去数日間、両方のパッケージのいくつかのバージョンが公開されました。

npmパッケージの作者にPureScriptインストーラーを添付した投稿からシフトして、彼は自分のアカウントが未知の攻撃者によって侵害されたと述べました。

しかし、 現在の形式では、悪意のあるコードのアクションは、パッケージのインストールを妨害することによってのみ制限されていました、これは新しいメンテナの最初のバージョンでした。 明示的な悪意のあるアクティビティを実行せずに「npmi-g purescript」コマンドを使用してパッケージをインストールしようとすると、悪意のあるアクションがループアウトされました。

XNUMXつの攻撃が特定されました

要するに、 コードはpurescriptnpmインストーラーを妨害して、ダウンロードが完了しないようにします、「プリコンパイルされたバイナリがプラットフォームに提供されているかどうかを確認する」ステップ中にインストーラーがハングする原因になります。

最初のエクスプロイトは、load-from-cwd-or-npmパッケージを壊すことによってこれを行いました そのため、loadFromCwdOrNpm()を呼び出すと、予期されたパッケージ(この場合、コンパイラバイナリのダウンロードに使用していたリクエストパッケージ)ではなく、パススルーシーケンスが返されます。 エクスプロイトのXNUMX回目の反復では、ダウンロードコールバックが発生しないようにソースファイルを変更することで、これを実行しました。

4日後 開発者は欠陥の原因を理解し、依存関係からload-from-cwd-o-npmを除外するアップデートをリリースする準備をしていました、攻撃者は、悪意のあるコードが削除された別のアップデートload-from-cwd-or-npm3.0.4をリリースしました。

ただし、別のRate-Map 1.0.3依存関係の更新がほぼ即座にリリースされ、ダウンロードのコールバック呼び出しをブロックする修正が追加されました。

つまり、どちらの場合も、load-from-cwd-or-npmの新しいバージョンとマップレートの変更は、明らかな偏差の性質を持っていました。

また、悪意のあるコードには、新しいメンテナのバージョンをインストールするときにのみ失敗したアクションをトリガーするチェックがあり、以前のバージョンをインストールするときにはまったく表示されませんでした。

開発者は、問題のある依存関係が削除されたアップデートをリリースすることで問題を解決しました。

問題のあるバージョンのPureScriptをインストールしようとした後、侵害されたコードがユーザーのシステムにインストールされるのを防ぐため。

最後に 開発者はお勧めします システムに上記のバージョンのパッケージを持っているすべての人に node_modulesディレクトリとpackage-lock.jsonファイルの内容を削除してから、purescriptバージョン0.13.2を設定します。


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。