コラム

Column

導入事例

Case Study

サイバーニュース

Cyber News

海外のサイバーセキュリティ関連のニュースを日本語でご紹介しています。

お知らせ

News

Joyfillのnpmパッケージ2種が侵害、ブロックチェーン経由でRATを配布

npmで公開されたJoyfill関連パッケージの一部ベータ版に、不正なJavaScriptが混入していたことが明らかになりました。対象パッケージをNode.jsから読み込むだけでコードが実行され、ブロックチェーンを経由してRATを取得する仕組みが確認されています。最終的には認証情報やブラウザデータ、Git関連情報などが窃取される可能性があり、開発環境やCI環境への影響が懸念されています。

The Hacker News:Two Compromised joyfill npm Packages Run RAT When Imported Into Node.js

この記事のポイント

  • Joyfillのnpm名前空間「@joyfill」に属する2つのベータ版パッケージから、不正なJavaScriptが確認されています。
  • 影響を受けるのは「@joyfill/layouts@0.1.2-2773.beta.0」と「@joyfill/components@4.0.0-rc24-2773-beta.4」です。
  • 一般的なnpmのインストール時スクリプトではなく、Node.jsがCommonJSパッケージを読み込んだタイミングで不正コードが動作します。
  • Tron、Aptos、BNB Smart Chainのトランザクションを利用して、次段階の不正コードを取得する仕組みが使われています。
  • 最終的なRATはファイル送信、追加JavaScriptの取得、端末情報収集、クリップボード読み取りなどの機能を備えています。
  • 別経路ではPython製インフォスティーラーも配布され、ブラウザ、Git、GitHub、VS Codeなどの情報を窃取する可能性があります。
  • Socketは、今回の攻撃とViteVenomが北朝鮮の脅威アクターによる同一の継続的な活動に関連していると分析しています。
  • 侵害が開発端末、ソースリポジトリ、CI環境、公開用認証情報のどこで発生したのかは明らかになっていません。

この記事に出てくる専門用語

  • npm Node.jsを中心とするJavaScript開発で広く利用されているパッケージ管理サービスです。開発者は公開されたライブラリを依存関係として追加できます。
  • RAT(Remote Access Trojan) 感染した端末を外部から遠隔操作する機能を持つマルウェアです。コマンド実行やファイル取得、情報窃取などに悪用されることがあります。
  • サプライチェーン攻撃 直接標的となる組織ではなく、その組織が利用するソフトウェア、開発ツール、ライブラリなどを侵害し、利用者へ攻撃を広げる手法です。
  • CommonJS Node.jsで長く利用されてきたJavaScriptモジュール形式の一つです。今回の攻撃ではCommonJSのエントリーポイントが読み込まれるタイミングで不正コードが実行されます。
  • C2(Command and Control) 攻撃者が感染端末へ命令を送ったり、取得した情報を受信したりするために利用する通信基盤です。
  • Socket.IO リアルタイムの双方向通信を実現するための技術です。今回確認されたRATでは、遠隔操作用の通信チャネルに利用されています。
  • ロックファイル プロジェクトで使用するパッケージの具体的なバージョンなどを固定するファイルです。不正なバージョンが記録されている場合、再インストール時にも取得される可能性があります。
CyberCrewのペネトレーションテストを
詳しく知る
CyberCrewへのお問い合わせ・
無料見積もりはこちら

Joyfillの2つのnpmパッケージに不正コードが混入

今回問題が確認されたのは、npmの「@joyfill」名前空間で公開されていた2つのプレリリース版です。具体的には「@joyfill/layouts@0.1.2-2773.beta.0」と「@joyfill/components@4.0.0-rc24-2773-beta.4」が影響を受けるバージョンとして挙げられています。Socketの分析によると、これらにはJavaScript製の不正コードが組み込まれており、DEV#POPPERマルウェアファミリーと関連するRATを配布する仕組みが確認されています。

特に注意すべきなのは、不正コードが実行されるタイミングです。npmを悪用した過去の攻撃では、パッケージのインストール時に実行されるライフサイクルフックを悪用するケースがあります。しかし今回のインプラントは、Node.jsがCommonJS形式のパッケージエントリーポイントを読み込んだ時点で動作します。つまり、対象ライブラリをアプリケーションやビルドツールから通常どおりインポートしたこと自体が、不正処理の開始につながる構造です。

Socketは「@joyfill/layouts」について、読み込んだプロセスの権限で任意コードを実行できるものとして扱うべきだとしています。影響の対象は開発者のPCだけに限定されず、CIランナー、テストツール、サーバーサイドレンダリング環境、ビルド環境など、対象パッケージを読み込むNode.jsプロセス全般に及ぶ可能性があります。

Tron・Aptos・BNB Smart Chainを使い不正コードを取得

不正コードの大きな特徴は、攻撃に必要な情報を固定されたC2サーバーだけに依存せず、複数のパブリックブロックチェーンを経由して取得する点です。Socketによると、パッケージが読み込まれると、ハードコードされたTronアドレスの最新の送信トランザクションを確認し、そこからBNB Smart Chain(BSC)のトランザクションハッシュを取得します。この処理に失敗した場合にはAptosアカウントを参照し、代替経路としてBSCトランザクションを取得します。

続いてBSC上のトランザクションから情報を読み出し、暗号化されたJavaScriptコードを復号して実行します。今回の不正コードでは、同時に2系統の処理が動作しており、一方では約77KBのJavaScriptペイロードへ到達します。このコードにはDEV#POPPERマルウェアファミリーとの類似性が確認されています。もう一方は独立したNode.jsプロセスを起動し、23.27.13[.]43へ接続して別のブート用ペイロードを取得し、復号後にJavaScriptとして評価・実行します。

ブロックチェーンを利用することで、攻撃者はnpmパッケージそのものを再公開しなくても、参照先のトランザクションを変更することで後続ペイロードを切り替えられるとされています。また、2系統の処理ではTron、Aptos、BSCそれぞれで異なるウォレットアドレスやアカウント、トランザクションが使われており、一つの通信経路が利用できなくなっても別の経路から攻撃を継続できる冗長な設計となっています。

パッケージを読み込んだ後も別プロセスで攻撃が継続

今回確認されたインプラントには、Node.jsプロセス内で動作する経路と、そこから切り離された別プロセスとして動作する経路の2つがあります。最初の経路では、ブロックチェーンを利用した解決処理を繰り返し、最終的に「clientCode」と呼ばれる第2段階のマルウェアを取得します。一方の独立プロセスは、指定されたIPアドレスへ接続し、別のJavaScriptを取得して実行する構造です。

Socketは、この独立プロセスについて単なる予備の経路ではないと説明しています。親となるNode.jsプロセスから切り離されて動作するため、対象パッケージを読み込んだビルド、テスト、CLIコマンドなどが終了した後も、不正プロセスが継続して動作できる可能性があります。そのため、ビルド処理が正常に完了したように見えても、その時点で不正な処理も終了したとは限りません。

この設計は、開発者が一時的に実行するツールやCI/CD処理でパッケージが読み込まれた場合にも問題となります。対象パッケージがサーバーアプリケーションとして長時間動作していなくても、一度インポートされたことをきっかけとして別のプロセスが起動する可能性があるためです。影響調査では、依存パッケージのバージョン確認だけでなく、該当環境上で不審なNode.jsやPythonプロセスが実行されていなかったかも確認する必要があります。

最終的なRATは遠隔操作やクリップボード取得に対応

ブロックチェーン経由で取得される最終的な「clientCode」は、強く難読化されたNode.js製RATとして動作します。確認されている機能には、設定されたアップロード先へのファイル送信、追加JavaScriptの取得、端末の基本情報収集、攻撃者側へのステータス通知などがあります。また、WindowsではPowerShell、macOSではpbpaste、Linuxではxclipまたはxselを利用し、クリップボードに保存されている内容を読み取る機能も備えています。

StepSecurityの分析では、不正コードがNode.jsのrequireとmoduleをグローバルオブジェクト上に公開し、公開ブロックチェーンのトランザクションからC2を特定した後、Socket.IOを利用した遠隔操作チャネルを開くことも確認されています。Socketによれば、最終的なコードは外部から渡されたJavaScriptやシェルコマンドを実行するほか、ファイルのアップロードや開発ツール関連ファイルの変更も可能です。

一方で、不正コードはすべての環境で同じように実行されるわけではありません。「github-runner」「buildbot」「buildkitsandbox」「microsoft-standard-WSL2」といったホスト名が設定されている開発環境、CI環境、サンドボックス環境では実行を避ける処理が確認されています。この動作は分析環境や特定の自動化環境を識別し、そこでの実行を回避するための仕組みとして組み込まれています。

Python製インフォスティーラーで開発者の認証情報も標的に

独立して動作する第2の攻撃経路には、「clientCode」RATのほか、Pythonで作成されたインフォスティーラーも関連付けられています。このマルウェアは、eSentireが2026年4月に報告した「OmniStealer」の派生版と評価されており、侵害した開発環境から幅広い情報を収集できるとされています。一般的な端末情報に加え、開発作業やソフトウェア公開に使用される認証情報も対象となっている点が特徴です。

確認された収集対象には、環境情報やホスト情報、Windows Credential Manager、Linux Secret Serviceに保存されたデータ、Chromium系ブラウザおよびFirefoxのデータがあります。さらに、暗号資産ウォレットやパスワードマネージャーのブラウザ拡張機能に保存された情報、Gitの認証情報、GitHub CLIの設定、GitHub Desktopのログ、Microsoft Visual Studio Codeのストレージも対象として列挙されています。

こうした情報が取得された場合、影響が最初に感染した開発端末だけで完結しない可能性があります。ただし、元記事では実際にこれらの情報を利用して追加のリポジトリやシステムが侵害された事例までは示されていません。今回確認されている事実は、マルウェアが開発者環境に保存された認証情報や開発ツール関連データを収集できる機能を持っているという点です。

PolinRiderやViteVenomとの共通点、Socketは同一活動と分析

今回使われたTron、Aptos、BNB Smart Chainを組み合わせる多段階のブロックチェーン型C2インフラは、「PolinRider」として追跡されている脅威クラスターとの関連が指摘されています。PolinRiderは、北朝鮮に関連する活動として追跡されている「Contagious Interview」と関係していると評価されています。SafeDepも今回の攻撃について、PolinRiderや過去の「astro.config.mjs」を標的とした攻撃との間に、ブロックチェーン型C2インフラ上の共通点があるとしています。

また、2026年7月にはCheckmarxとOpenSourceMalwareが「ViteVenom」と総称される悪意あるnpmパッケージ群を報告しています。これらもViteのフロントエンド開発環境を狙い、同様の階層型ブロックチェーンC2インフラを利用してRATを配布していました。そのRATにはリバースシェル、認証情報窃取、ファイル流出、永続的バックドアの追加などの機能が確認されています。

SocketはThe Hacker Newsに対し、ViteVenomと今回のJoyfill関連パッケージについて、別々のキャンペーンではなく、北朝鮮の脅威アクターによる同一の継続的な活動に関連すると分析しています。さらに今回の2つの悪意あるバージョンは、同じnpmアカウントからNode.js 18.20.0とnpm 10.5.0を利用して公開され、問題のコードはバンドル作成時点ですでに含まれていたと報告されています。

侵害経路は未特定、対象バージョンの完全な排除が必要

現時点では、悪意あるコードがどの段階でJoyfillのパッケージへ混入したのかは明らかになっていません。Socketは、開発者のワークステーション、ソースコードリポジトリ、CI環境、npm公開用の認証情報などが侵害された可能性を挙げていますが、どの経路が実際に使われたかについては特定されていません。そのため、現段階で特定の侵害原因を断定することはできません。

対象バージョンをインストールした開発者に対しては、単純にpackage.json上のバージョンを変更するだけでなく、ロックファイル、パッケージキャッシュ、社内ミラー、ビルドイメージ、デプロイ済み成果物からも問題のバージョンを削除することが推奨されています。そのうえで、安全性を確認したバージョンへ固定する必要があります。不正バージョンがキャッシュやコンテナイメージに残っている場合、後のビルドで再び利用される可能性があるためです。

さらに、影響を受けたNode.jsプロセスからアクセス可能だった認証情報についてはローテーションが推奨されています。今回のマルウェアはGit、GitHub、ブラウザ、パスワード管理拡張機能、VS Codeなどの情報を取得できるため、対象パッケージを一度でも読み込んだ環境では、パッケージの削除だけで対応を完了させず、関連する認証情報と実行環境の確認まで行うことが重要です。

参考文献・記事一覧

投稿者プロフィール

CyberCrew(サイバークルー)
CyberCrew(サイバークルー)
CyberCrew(サイバークルー)は、企業の情報セキュリティをトータルで支援する専門チームです。高度なスキルを持つホワイトハッカーが在籍し、サイバー攻撃の監視・検知から初動対応、リスク診断や従業員向けのセキュリティ教育まで、幅広いサービスを提供。企業のニーズに応じた柔軟な対応で、安心・安全なIT環境の実現をサポートします。

情報セキュリティサービス台帳登録事業者

■ セキュリティコンテスト受賞歴
CTF国際大会 世界No.1
CEH Master Leaderboard 世界No.1
Hack The Box Rank TOP10

■ 保有セキュリティ資格
GIAC GXPNCisco Cybersecurity SpecialistCEH MasterCEH Practical
Cyber Security Professional CertificateOSCPOSCP+CPENTOSWP
eCPPTeMAPTCRTSSOC-100PEN-100
HTB Offshore Penetration Tester(Level 3)
CyberCrewのペネトレーションテストを
詳しく知る
CyberCrewへのお問い合わせ・
無料見積もりはこちら

弊社サービスをご利用いただいたお客様の声

ダークウェブ調査の効率化で、より実践的なRed Team活動へ(KPMG Baltics OÜ)

kpmg

KPMG Baltics OÜのRed Team LeadがALIENGATE Dark Web Intelを評価。API・設定管理の負担軽減、ダークウェブ調査の効率化、Red Team活動への活用可能性について寄せられた製品レビューをご紹介します。

事例の詳細を見る

大規模リニューアルのリリース判断を支えたセキュリティリスクの客観的な整理(ニッポンインシュア株式会社)

ニッポンインシュア株式会社

Cloud Insureの大規模リニューアルに伴い、CyberCrewのセキュリティ診断・ペネトレーションテストを導入したニッポンインシュア株式会社様の事例をご紹介します。

事例の詳細を見る

決め手はコスパと柔軟性、投資対効果の高いセキュリティ検証(ソースネクスト株式会社)

ペネトレーションテスト

ソースネクストの導入事例。圧倒的なコストパフォーマンスと、準備工数を最小限に抑えた柔軟なペネトレーションテストの成果を公開。

事例の詳細を見る

安心感をもたらしたペネトレーションテスト活用(株式会社ハンモック)

ペネトレーションテスト

株式会社ハンモックにおけるペネトレーションテストの導入事例です。ペネトレーションテストを活用し、安心感のあるセキュリティ対策を実現した取り組みをご紹介します。

事例の詳細を見る


Page Top