Hackers Use Hugging Face to Host Second-Stage Malware for npm Supply Chain Attack
2026/05/22 CyberSecurityNews — AI 分野で最も信頼されるプラットフォーム Hugging Face を武器化する、新たなハッキング手法が確認された。北朝鮮に関連する脅威アクターたちが、広く利用される AI/ML ハブである Hugging Face 内に 2-Step のマルウェアを埋め込み、マルウェア配布チャネルおよびデータ外部送信バックエンドとして悪用している。この活動が、世界中のソフトウェア開発者を標的とする、高度な npm サプライチェーン攻撃の一つとなっている。

この “terminal-logger-utils” と呼ばれる攻撃は、通常の開発ユーティリティのように見える単純な npm パッケージから開始される。それに加えて、パッケージ pretty-logger-utils/ts-logger-pack/pinno-loggers が連鎖することで悪意の挙動を拡散し、それらをインストールする開発者に深刻なリスクをもたらしている。
このマルウェアは、Telegram データ/SSH キー/暗号資産ウォレット/ブラウザ・ログイン・データベース/クラウド設定ファイルなどを窃取する。
これらの悪意のパッケージを展開しているのは、北朝鮮 (DPRK) 関連キャンペーンに関連する脅威アクターであることを、OX Security の研究者たちが特定した。以前の DPRK 活動に関連していた脅威アクターのアカウント “jpeek895” が、類似の npm パッケージを公開していたことを、kmsec.uk が指摘している。
OX Security は、「このパッケージは、キーロガー/インフォスティーラー/リモートアクセス型トロイの木馬 (RAT) の機能を備える。きわめて高機能で危険な脅威である」と述べている。
この攻撃の特徴は、Hugging Face を巧妙に悪用し、検知を回避している点にある。マルウェアを配布する攻撃者は、独自のサーバを運用する代わりに、Hugging Face のプラットフォーム上に第 2段階のバイナリをホストしている。この手法により、多くのセキュリティ・フィルタにおいて、安全かつ信頼できるサイトとして扱われる。
さらに、窃取されたデータは Hugging Face のプライベート・データセットへアップロードされる。その結果、悪意ある通信は通常の AI 研究トラフィックに自然に溶け込み、検知を回避する。
依存パッケージに関連する npm メンテナ・アカウント pvnd3540749/yggedd817513/jpeek886 が感染の拡大に関与している。
一連の悪意のパッケージをインストールした開発者は、自身の環境が侵害されたという前提で、直ちに対応する必要がある。
Hugging Face を悪用するハッカー
マルウェアの侵入点は、パッケージの package.json 内に埋め込まれた、ポスト・インストール・フックにある。開発者が npm インストールを実行すると、このフックにより “utils.cjs” というファイルが静かに実行される。このファイルは、難読化されたマルウェア・ドロッパであり、被害者の OS を判定した上で、Hugging Face から適切なバイナリを取得する。
ダウンロードされたバイナリは、Node.js Single Executable Application であり、悪意の JavaScript インプラントを内包している。
このバイナリが実行されると、WebSocket 接続を通じて攻撃者のサーバへの接続が確立され、以下のようなマシン制御へと至る。
- ファイルの読み書き
- シェルコマンドの実行
- スクリーンショットの取得
- 入力の注入
さらに起動時にはバックグラウンドループが並行実行され、キーストロークの継続的な記録/クリップボードの監視/窃取データの HTTP エンドポイントへの送信を行う。これらはすべて開発者に気付かれずに実行される。
永続化および自己更新のメカニズム
Windows マシン上に展開されたインプラントは 、”%LOCALAPPDATA%\MicrosoftSystem64″ に自身をインストールする。このディレクトリ名は正規の Microsoft システム・フォルダに似せて設計されている。
その後に、隠蔽された VBS ランチャおよびスケジュール・タスクにより、ログイン時の永続化が登録される。それに加えて、レジストリ Run キーが、フォールバックとして設定される。
初回の実行時には、Hugging Face 上の攻撃者リポジトリに接続し、自身の更新に関する必要性の有無を確認する。この自己更新の機能により、再感染を行わずにインプラントの置換やアップグレードが可能となる。
セキュリティ・チームにとって必要なことは、すべての感染したマシンからマルウェアを削除し、以下に示す侵害指標 (IoC) への通信を遮断することだ。それに加えて、すべてのキーをローテーションし、二要素認証を有効にすべきである。
開発者に対して強く推奨されるのは、不明なパッケージに含まれるポスト・インストール・スクリプトを信頼しないことである。さらに、CI やビルドパイプライン環境では npm ci の使用が推奨される。
侵害指標 (IoC)
| Type | Indicator | Description |
|---|---|---|
| npm Package | terminal-logger-utils | Primary malicious npm package; contains the postinstall hook that triggers the attack chain |
| npm Package | pretty-logger-utils | Dependent malicious package that imports terminal-logger-utils |
| npm Package | ts-logger-pack | Dependent malicious package that imports terminal-logger-utils |
| npm Package | pinno-loggers | Dependent malicious package that imports terminal-logger-utils |
| File Name | utils.cjs | Obfuscated malware dropper; opened by the postinstall hook to download second-stage payload |
| File Path | %LOCALAPPDATA%\MicrosoftSystem64 | Persistence installation path used by the implant on Windows machines |
| Hugging Face Repository | Lordplay/system-releases | Attacker-controlled repository used to host the second-stage Node.js SEA binaries |
| HTTP Endpoint | /api/validate/keyboard-events | C2 endpoint used by the implant to exfiltrate keystroke data over HTTP |
| Threat Actor Account | jpeek895 | npm account responsible for uploading the primary malicious package |
| npm Account | pvnd3540749 | Maintainer account linked to the dependent malicious packages |
| npm Account | yggedd817513 | Maintainer account linked to the dependent malicious packages |
| npm Account | jpeek886 | Maintainer account linked to the dependent malicious packages |
| IP Address | 195.201.194.107 | WebSocket C2 server address used by the implant for full machine control |
Note: IP アドレスおよびドメインは、意図的に無効化 ( 例: [.] ) されている。再有効化は MISP/VirusTotal/SIEM などの、制御された脅威インテリジェンス環境で実施すべきである。
訳者後書:開発者が使う npm パッケージのポスト・インストール・スクリプトが悪用され、 信頼された外部プラットフォーム経由でマルウェアがダウンロードされるという問題が生じています。 開発ユーティリティを装うパッケージの中には、悪意の処理が仕込まれています。 さらに、ダウンロード先やデータの送信先として Hugging Face を利用することで、 通常の AI 研究で発生する通信に見せかけて、セキュリティ・フィルターによる検知を回避する仕組みとなっています。 パッケージを導入する際の、設定やスクリプトの検証の難しさを示す事例です。ご利用のチームは、ご注意ください。よろしければ、Hugging Face での検索結果も、ご参照ください。
.webp)
You must be logged in to post a comment.