過去4か月間で、130を超える情報窃取型の悪意あるNPMパッケージが合計で約10万回ダウンロードされていると、セキュリティ研究者が警告しています。
悪意ある行為を行っている合計136個のNPMパッケージが特定されており、それぞれ7月と8月から活動している2つの異なるオペレーションの一部です。
10個のパッケージのみが7月に始まったキャンペーンの一部として特定されましたが、サイバーセキュリティ企業Socketが発見するまでに合計9,900回以上ダウンロードされていました。
これらのパッケージは、npm install実行時にスクリプトを自動実行するNPMのpostinstallフックを利用しています。スクリプトは被害者のオペレーティングシステムを特定し、新しいターミナルウィンドウでペイロードを起動して、NPMインストールプロセスとは独立して実行されます。
悪意あるコードは複数層の難読化が施されており、インストール時にNodeのreadlineインターフェースを使って偽のCAPTCHAプロンプトを表示します。その後、システム情報をリモートサーバーに送信し、最終的なバイナリをダウンロードして実行します。
ペイロードは24MBのPyInstallerでパッケージ化されたPythonアプリケーションで、システムの偵察を行い、SQLiteデータベース、JSON設定ファイル、テキスト設定ファイル、ブラウザなど、さまざまなアプリケーションやサービスから機密情報を収集します。
インフォスティーラーは、キーチェーン(認証情報を保存するもの)、ブラウザのクッキー、認証トークン、SSH秘密鍵、その他の機密情報を標的とし、これらをZIPファイルに圧縮して攻撃者が管理するリモートサーバーに送信します。
2つ目のキャンペーンの一部として、合計126個のパッケージが特定されており、8月から開始されています。2ダースのパッケージは削除されましたが、約80個が依然としてアクティブであるとKoi Securityは警告しています。これらのパッケージは合計で86,000回以上ダウンロードされています。
PhantomRavenと名付けられたこのキャンペーンは、隠された依存関係を利用してインフォスティーラーマルウェアを配布しつつ、パッケージ自体はクリーンに保っています。
開発者がHTTP URLを依存関係指定子として利用できるNPMのリモート動的依存関係(RDD)機能を悪用し、preinstallフックを使って、パッケージのインストール時にリモートサーバーから悪意あるコードが取得されるようにし、検知を回避しています。
preinstallスクリプトは自動的に実行され、ユーザーへの警告や操作を必要とせず、依存関係ツリーのどれだけ深い位置にあっても実行されます。
一度実行されると、マルウェアは被害者の開発環境内のメールアドレスを検索し、リポジトリやワークフローへのアクセスを提供する認証情報やトークンを探してインフラを特定し、その後システム全体の偵察を行います。
マルウェアは、データをHTTP GETリクエストのURLにエンコードして送信したり、HTTP POSTリクエストでJSONとして送信したり、WebSocket接続を通じて攻撃者のサーバーに送信したりする様子が確認されています。
両方のキャンペーンで、攻撃者はタイポスクワッティングを利用して開発者を騙し、悪意あるパッケージを実行させていました。PhantomRavenの一部として、パッケージ名はLLMの幻覚に合わせて慎重に選ばれていたとKoiは述べています。
AIアシスタントにパッケージの推薦を求めた開発者は、実在しないパッケージのもっともらしい名前を提示されることがあります。キャンペーンの背後にいる攻撃者はそれらのパッケージを作成し、AIの推薦を信じた開発者がそれらをダウンロードしました。
「依存関係の精査は必要ですが、もはや十分ではありません。チームはNPMやPyPIから取得する『何か』だけでなく、その後のパッケージング、インストールスクリプト、ビルド成果物、実行時の挙動まで可視化し、制御する必要があります。Postinstallフック、再パッケージング手順、ターミナルで起動されるペイロードはすべて攻撃者が武器化している正当な仕組みであり、注意が必要です」とDryRun SecurityのCTO、Ken Johnson氏は述べています。
「運用上は、インストールやビルドを信頼できない実行として扱うことを意味します。パッケージのインストールは一時的で隔離されたCIコンテナで実行し、再現可能なビルドと署名済み成果物を要求し、CIに到達する前にpostinstallフックやタイポスクワット名をスキャンし、ビルドホストからの外部接続を監視し、OSの認証情報ストアへのアクセスを制限する(またはプレーンテキストの秘密を露出しないボールトを使用する)ことです。アーカイブやバイナリへの予期しない変更を早期に検知できるよう、パイプラインに整合性チェックやSBOMを追加してください」とJohnson氏は付け加えました。
翻訳元: https://www.securityweek.com/136-npm-packages-delivering-infostealers-downloaded-100000-times/