npmエコシステムを狙ったサプライチェーン侵害により、乗っ取られたJoyfillパッケージを通じて多段階のリモートアクセス型トロイの木馬(RAT)と認証情報窃取ツールが仕込まれていたことが判明しました。信頼された開発者向け依存関係の悪用が、ますます高度化している実態を浮き彫りにしています。
2026年7月28日、@joyfill/componentsと@joyfill/layoutsの悪意あるベータ版がnpmレジストリに公開され、コンパイル済みの配布バンドルに直接、高度に難読化されたペイロードが埋め込まれていました。
postinstallスクリプトを悪用する従来のnpm攻撃とは異なり、このインプラントはインポート時に実行されるため、npm install –ignore-scriptsのような防御用フラグを使っても実行を防ぐことができません。
悪意あるコードは公開されたtarballにのみ存在し、対応するソースコード側の変更は見られません。これはレジストリまたは公開パイプラインが侵害された強力な証拠です。
StepSecurityは、独自のOSS AIスキャンシステム、Harden-Runnerを用いたランタイム実行検証、そして影響を受けたビルドのバイナリ差分比較により、この侵入を独自に検証しました。
特筆すべきは、@joyfill/[email protected]がセキュリティスコア0の「Critical」と判定され、拒否評価を受けている点です。
SecurityProducts & Services

両パッケージに埋め込まれた難読化ペイロードが同一であることも、単一の脅威アクターが共通のインプラントを展開していることを示しています。
distバンドル内に埋め込まれた初期ローダーはインポート時に実行され、グローバルオブジェクトを操作することでNode.jsのプリミティブ(requireやmodule)を露出させます。
シード値による文字列シャッフルや辞書ベースの展開処理を含む多層の難読化が施されており、実際のペイロードがパッケージ内で平文として現れることは一切ありません。
この設計により、攻撃者はC2エンドポイントを動的にローテーションしつつ、CI/CD環境で一般的に許可リストに登録されているapi.trongrid.ioやbsc-dataseed.binance.orgといった正規のWeb3 API呼び出しに悪意あるトラフィックを紛れ込ませることができます。
ペイロードが解決されると、マルウェアはSocket.IOベースのRATを展開します。このRATはシステム偵察、ファイル窃取、任意コード実行、クリップボード情報の収集が可能です。
感染したシステム(開発者のワークステーションやCIランナーを含む)のフィンガープリントを取得し、広く使われているVS Codeなどのアプリケーション(@vscode/deviceid経由)、Discord、GitHub Desktop、そして特に重要な点として、グローバルなnpm CLIにローダースタブを注入することで永続化を図ります。
この後者の手法はワーム的な拡散を可能にします。感染したマシン上でその後行われるnpm操作は、新たにビルドされるパッケージにペイロードを再び持ち込む可能性があります。
StepSecurityの研究者らによると、この攻撃チェーンは非常に高度で、静的検知や振る舞い検知を回避するよう設計された5段階のメモリ内実行フローで構成されているとのことです。
Joyfillのnpmサプライチェーン攻撃
これと並行して、このマルウェアはPythonベースの認証情報窃取ツールを展開し、ブラウザに保存された認証情報、暗号資産ウォレット、GitHub CLIトークン、OSのキーチェーンといった価値の高い資産を狙います。
Anti-malwaresoftware
収集されたデータは暗号化された上で、攻撃者が管理するインフラへ送信されます。
このキャンペーンの重要な革新点は、ブロックチェーンを利用したコマンド&コントロール(C2)の解決手法です。インフラをハードコーディングする代わりに、マルウェアはTronアドレスからトランザクションを取得し、eth_getTransactionByHash経由でBinance Smart Chainへ移行した上で、XORロジックを用いてペイロードを復号します。
npmキャンペーンに紐づく痕跡としては、166.88.134.62:443へのHTTPベースのSocket.IO通信や、グローバルマーカーを介して埋め込まれたキャンペーン識別子A9-0135-3が挙げられます。
追加のインフラ(198.105.127.210および23.27.202.27)は別の配布経路を支えており、今回の特定のサプライ–チェーン攻撃経路にとどまらない、より広範なマルウェアファミリーの存在を示唆しています。
これほど高度な手口であるにもかかわらず、管理された条件下でのランタイム実行検証では外部通信は確認されませんでした。これはおそらく、開示後に攻撃者が管理するブロックチェーン上のポインタが迅速にテイクダウンされたためと考えられます。
しかし、バンドルの差分比較とコード抽出により、ペイロードの存在は決定的に確認されています。
影響を受けたパッケージの2773件のプレリリースバージョンはすべて、完全に侵害されているものとして扱う必要があります。組織に対しては、これらのバージョンを直ちに削除し、依存関係を2026年7月28日より前のリリースに固定した上で、影響を受けた環境にさらされたすべての認証情報をローテーションするよう推奨します。
永続化メカニズムとnpm CLIへの感染経路を踏まえると、修復にはワークステーションの完全な再イメージ化と、開発者向けツールチェーンの整合性検証を含めるべきです。
今回の事案は、サプライチェーン攻撃がランタイムトリガー型のインプラント、分散型C2機構、そして開発者を標的とした侵害後の活動へと重大なシフトを遂げていることを浮き彫りにしています。従来の依存関係スキャンにとどまらない、より深いランタイム検査、通信の監視、そしてアーティファクト単位での整合性検証の必要性を改めて示すものです。
IOC(侵害指標)
| IPアドレス | ポート/パス | 備考 |
|---|---|---|
| 166.88.134.62 | 80, 443 | HTTP/HTTPS経由のC2エンドポイント |
| 23.27.13.43 | /$/bootを提供 |
ステージング/ローダー用パスの可能性 |
| 198.105.127.210 | 不明 | C2/支援インフラ |
| 23.27.202.27 | 不明 | C2/支援インフラ |
注: IPアドレスおよびドメインは、意図しない名前解決やハイパーリンク化を防ぐため、意図的に無害化表記(defang、例: [.])を用いています。再度有効な形式に戻す作業は、MISP、VirusTotal、あるいは自組織のSIEMなど、管理された脅威インテリジェンス基盤上でのみ行ってください。
2026年、AI SOCに求められる機能とは? 完全チェックリスト : AI SOC機能チェックリストをダウンロード
翻訳元: https://gbhackers.com/joyfill-npm-supply-chain-attack/