Supply chain attack hits npm package with 45,000 weekly downloads
2025/05/08 BleepingComputer — npm パッケージ “rand-user-agent” がサプライチェーン攻撃を受け、難読化されたコードを注入されたことが判明した。このコードは、ユーザーのシステム上で RAT(Remote Access Trojan) を起動させるよう設計されている。“rand-user-agent” パッケージは、ランダムなユーザー・エージェント文字列を生成するツールであり、Web スクレイピング/自動テスト/セキュリティ研究などに役立つものだ。このパッケージは、現在では非推奨となっているが、週平均で 45,000 件ものダウンロード数を誇っている。

Aikido の研究者たちによると、このパッケージの、半ば放棄されながらも人気がある状況を悪用する攻撃者は、不正なコードを取り込んだ、不正な後続バージョンを公開しているという。数多くのダウンストリーム・プロジェクトにより、これらのバージョンがダウンロードされた可能性が高いとされている。
2025年5月5日に Aikido は 、マルウェア分析システムが rand-user-agent の新バージョン 1.0.110 を検出したことで、この侵害に気づいたという。
さらなる調査の結果、npm サイトのソース・ビューで水平スクロールしないと表示されない、”dist/index.js” ファイル内に隠された、難読化コードの存在が明らかになった。
また、rand-user-agent の最後の正規バージョンが、7ヶ月前にリリースされた 2.0.82 であることも判明した。
したがって、その後に公開されたバージョン 2.0.83/2.0.84/1.0.110 は、すべてが悪意のパッケージであり、それに対応するリソースも、rand-user-agent プロジェクトの GitHub リポジトリには存在しない。
最新バージョンに埋め込まれた悪意のコードは、ユーザーのホーム・フォルダ内 “~/.node_modules” に隠しディレクトリを作成し、module.paths を拡張する。つまり、このカスタム・パスから、axios や socket.io-client などを読み込むように設定されている。
続いて、攻撃者の C2 サーバ “http://85.239.62 [.] 36:3306” への永続的なソケット接続が開かれ、ホスト名/ユーザー名/OS タイプ/生成された UUID などを取り込んだ、マシン ID 情報が送信される。
RAT がアクティブになると、以下のコマンドの、いずれかを受信できる状態になる:
- cd :現在の作業ディレクトリを変更する
- ss_dir:作業ディレクトリをスクリプトのパスにリセットする
- ss_fcd::指定されたディレクトリに強制的に移動する
- ss_upf:f,d:ファイル f を宛先 d にアップロードする
- ss_upd:d,dest:ディレクトリ d 内のすべてのファイルを、ディスティネーション dest にアップロードする
- ss_stop:進行中のファイルアップロードを中断する
- (その他のコマンド):child_process.exec () を使用して、シェルコマンドとして実行する
現時点において、この悪意のバージョンは、npm のパッケージ・リポジトリから削除されている。したがって、いま入手可できる最新バージョンは安全なものとなる。ユーザーに推奨されるのは、安全な最新バージョンへの速やかな移行である。
ただし、バージョン 2.0.83/2.0.84/1.0.110 にアップグレードしている場合には、システム全体をスキャンし、侵害の兆候を確認することが重要となる。なお、正規のバージョンにダウングレードしても、システムから RAT は削除されないので、その点に注意してほしい。
また、現在もサポートされており、監視体制が整っているフォーク版の “rand-user-agent” の導入を視野に入れるのも一案だ。
このパッケージが侵害された方法を確認するために、BleepingComputer は開発者に連絡を取っているが、回答は得られていない。
週平均で 45,000 件のダウンロード数という、“rand-user-agent” パッケージが汚染されていたという、とても怖い話です。この npm や PyPI などでは、定期的に発生するパッケージ汚染ですが、それを止めるのは、なかなか難しいようです。ご利用の開発チームは、十分に ご注意ください。よろしければ、npm で検索も、ご参照ください。

You must be logged in to post a comment.