Trust Walletハック:クリスマスイブに700万ドルを盗んだコードの内部

2024年のクリスマスイブ、40万人が使用していたCyberhaven Chrome拡張機能が侵害されました。攻撃者は悪意のあるアップデートを推し進め、Facebook、ChatGPT、その他のプラットフォームからユーザー認証情報とセッショントークンを盗みました。

2025年のクリスマスイブ、それが再び起きました。

今回のターゲットはTrust Walletで、Binanceが所有する暗号ウォレットであり、100万人以上のChrome ユーザーを有しています。攻撃は同じ手口に従いました:休日中にみんなが休んでいるときに悪意のあるアップデートを推し進め、セキュリティチームが人手不足の間に認証情報を集め、誰も気づく前に現金化します。

Image

結果:48時間以内にユーザーウォレットから約700万ドルが引き出されました。

私たちは侵害された拡張機能を分析しました。私たちが見つけたものは公開されている情報を超えており、この攻撃がいかに計画的だったかを明らかにしています。

何が起きたのか

2025年12月24日、Trust Walletバージョン2.68.0がChrome ウェブストアに公開されました。ユーザーが更新してから数時間以内に、ウォレットが空になり始めました。オンチェーン調査員ZachXBTは12月25日にそのパターンにフラグを立てました。セキュリティ研究者Akinatorはそれを拡張機能のアップデートにたどり着きました。

Image

12月26日までに、Trust Walletは侵害を確認しました。Binanceの共同創業者Changpeng Zhao(CZ)は、影響を受けたユーザーが完全に払い戻されることを発表しました:

Image

侵害されたバージョンは削除されました。バージョン2.69が修正プログラムとしてプッシュされました。ユーザーは新しいウォレットに資金を移動することをお勧めされました。

これが公開ストーリーです。実は、コードの内部で何が起こったかを説明しましょう。

みんなが間違ったこと

ほとんどのレポートでは、攻撃を「シードフレーズをインポートした」ユーザーを対象としたものとして説明していました。これは被害の範囲を過小評価しています。

悪意のあるコードはすべてのアンロック時に発動します。シードフレーズのインポート時だけではなく。パスワードまたはバイオメトリクスで認証した場合、侵害されたウィンドウ中にウォレットを数か月使用していてもそれを開いたばかりの場合でも、シードフレーズが流出します。

バージョン2.68.0がインストールされている間にTrust Walletのロックを解除した誰もが、ウォレットが侵害されていると想定する必要があります。

技術的な内訳

攻撃は連携して動作する2つのファイルで機能していました。

アナリティクスエンドポイントのハイジャック

ファイル:4482.js(33129-33130行目)

拡張機能はアナリティクスにPostHogを使用しています。攻撃者はSDK初期化を自分自身のサーバーを指すように変更しました:

Image

ドメインapi.metrics-trustwallet.comは正当なTrust Walletインフラストラクチャのように見えます。違います。それは攻撃者が制御しており、盗まれたデータをテレメトリとして偽装して受信するように設計されています。

流出ロジック

ファイル:8423.js(467-492行目と520-548行目)

実際の盗難は、ウォレットのアンロックフローで発生します。コードは両方の認証パス(パスワードとバイオメトリクス)に挿入され、完全なカバレッジを保証しました。

パスワードのアンロックパスは次のとおりです:

Image

これを効果的にする3つのことがあります:

マルチウォレット列挙。コードはユーザーのアカウント内のすべてのウォレットをループします。アクティブなものだけではありません。複数のウォレットが構成されている場合、すべてが侵害されました。

errorMessageの偽装。シードフレーズは標準のアンロック テレメトリのようなものの内側にerrorMessageというフィールドに詰め込まれます。カジュアルなコードレビューでは、エラーメタデータを含むアンロック成功を追跡するアナリティクス イベントを見ます。疑わしいことはありません。「エラー」が12語のニーモニックフレーズであることに気づかない限り。

デュアル認証パスのカバレッジ。パスワードとバイオメトリクスの両方のアンロックフローには、同じ悪意のある挿入が含まれています。逃げ場はありません。

ペイロードの様子

攻撃者のサーバーに送信されるデータ構造は次のとおりです:

Image

12語。ウォレットを空にするのに必要なのはそれだけです。

再パッケージ化の兆候

流出コードを超えて、攻撃者が拡張機能を再パッケージ化したことを示唆する2つの構造的変更が見つかりました。Trust Walletのビルドパイプラインにコードを挿入するのではなく。

キーフィールドの欠落

バージョン2.67のmanifest.jsonには、拡張機能の公開鍵署名を含むキーフィールドが含まれていました。バージョン2.68では、このフィールドが削除されました。

キーフィールドは拡張機能のIDを固定します。削除すると、拡張機能を異なる暗号化IDで再パッケージ化できます。これは、攻撃者がTrust Walletの元の署名キーにアクセスできなかったか、署名ベースの検出を回避するために意図的に削除したかのいずれかを示唆しています。

どちらの方法でも:拡張機能を監視していて、バージョン間でキーフィールドが消えた場合は、調査してください。

新しいWASM暗号化モジュール

バージョン2.68では、2.67に存在しない新しいファイルが導入されました:

ファイル:4f8cd8a01d2966c5de9b.module.wasm(1.2MB)

これはsecp256k1楕円曲線暗号ライブラリです。これはBitcoinとEthereumがトランザクション署名に使用するのと同じ曲線です。モジュールは以下の関数をエクスポートします:

  • sign
  • signRecoverable
  • privateAdd
  • pointFromScalar

これらの機能により、拡張機能はトランザクションに直接署名し、キーを導き、秘密鍵マテリアルを操作することができます。これが積極的に使用されたか、バックアップメカニズムとして機能したかに関わらず(PostHog流出が失敗した場合)、クリーンバージョンに存在しなかった追加の攻撃表面を表しています。

攻撃者インフラストラクチャ

流出ドメインmetrics-trustwallet.comはIPアドレス138.124.70.40に解決され、Ubuntuで稼働しているnginx/1.24.0を実行していました。同じサーバー上のポート5000は、Synology DiskStation(DSM 6.2)ログインページを公開しており、攻撃者が自分自身のまたは侵害されたNASデバイスを流出インフラストラクチャとして使用していることを示唆しています。

Image

直接クエリすると、サーバーは以下を返しました:

Image

Duneリファレンス。文脈では、「スパイス」はシードフレーズです。それらを制御し、資金を制御します。

Last-Modifiedヘッダーは、インフラストラクチャが12月8日までに段階的であったことを明らかにしています。12月24日に悪意のあるアップデートがプッシュされるまで2週間以上。これは機会主義ではありませんでした。計画されていました。

DuneのコールサインはShai-Hulud npmインシデントを含む他のサプライチェーン攻撃で見られた同様のリファレンスをエコーしています。俳優の間に技術的なリンクを確立していませんが、テーマティックな重複は注目に値します。

タイムライン

  • 12月8日、2025年:攻撃者インフラストラクチャが段階的になりました(metrics-trustwallet.comが構成されました)
  • 12月24日、2025年:悪意のあるバージョン2.68.0がChrome ウェブストアにプッシュされました
  • 12月25日、2025年:ユーザーがウォレット流出をレポートします。ZachXBTがパターンにフラグを立てます
  • 12月25日、2025年:Akinatorが拡張機能のアップデートに問題を追跡します
  • 12月26日、2025年:Trust Walletは侵害を確認します。バージョン2.69がリリースされました
  • 12月26日、2025年:CZはSAFUファンドを通じた完全な払い戻しを発表しました

未解決の問題

攻撃者は公式Chrome ウェブストアチャネルを通じて悪意のあるアップデートをどのようにプッシュしたのですか?

可能性は以下を含みます:

  • 侵害された開発者認証情報
  • CI/CDパイプライン攻撃
  • インサイダーアクセス
  • チームメンバーのソーシャルエンジニアリング

Trust Walletは彼らがまだ調査中であると述べています。答えは重要です。Trust Walletだけではなく、同じディストリビューション インフラストラクチャに依存しているすべての拡張機能パブリッシャーにとってです。

重要なポイント

セキュリティチーム向け:

  • バージョン更新クールダウンを実装します。拡張機能の更新を48~72時間遅延させると、新しいバージョンは組織に到達する前に公開スクラッチを受けられます。この場合、悪意のあるバージョンは24時間以内にフラグが立てられました。クールダウンポリシーは露出を完全に防ぐことができました。
  • クリスマスイブは現在、拡張機能のサプライチェーン侵害の既知の攻撃ウィンドウです。2年連続。それに応じて計画します。
  • 拡張機能のバージョン間の変更を監視し、特にキーフィールドの削除を監視します。

拡張機能パブリッシャー向け:

  • ビルドおよびリリースパイプラインを監査します。更新がリポジトリからWebストアに到達する方法がわからない場合、ブラインドスポットがあります。
  • 不正な再パッケージ化を検出する署名検証を実装します。

ユーザー向け:

  • 2025年12月24日~26日の間にTrust Wallet Chrome拡張機能をロック解除した場合、シードフレーズが侵害されていると想定します。すぐに新しいウォレットに資金を移動してください。
  • ブラウザー拡張機能はハイリスクソフトウェアです。ウォレット機能は、ブラウザコンテキストではなく、専用アプリケーションまたはハードウェアに属しています。

最後の言葉

1年前、Cyberhaven。今はTrust Wallet。どちらもクリスマスイブです。どちらもChrome ウェブストアの公式更新メカニズムを通じて。どちらも24時間以内にコミュニティに捕捉されました。しかし、実際の損害がされる前ではありません。

パターンは明確であり、教訓も同様です:すべての悪意のあるアップデートをあなた自身を捕捉する必要はありません。あなたは最初の行に並ぶ必要がないだけです。

バージョンの更新クールダウンは、この種のサプライチェーン攻撃に対する最も単純な防御です。組織が拡張機能の更新を48~72時間遅延させた場合、より幅広いセキュリティコミュニティを初期警告システムとして機能させます。更新がユーザーに到達するまでに、検証されるか、フラグが立てられます。

別のクリスマスイブの攻撃が来るかどうかは問題ではありません。あなたがそれの準備ができているかどうかです。

このライトアップはKoiの研究チームによって著作されました。

バージョン更新クールダウンおよび他のポリシーがどのように組織を拡張機能サプライチェーン攻撃から保護できるかについてもっと学びたい場合は、デモを予約してください

安全でいてください。

IOC

  • 拡張機能ID:egjidjbpglichdcondbcbdnbeeppgdph
  • 侵害されたバージョン:2.68.0
  • 悪意のあるドメイン:metrics-trustwallet.com
  • 流出IP:138.124.70.40
  • PostHog APIキー:phc_b7MQeJq5OhCBJDKHWLA2c1ubYhbY5L97ZsZ66RGwq6O
  • 悪意のあるファイル:4482.js、8423.js
  • WASMモジュール:4f8cd8a01d2966c5de9b.module.wasm

翻訳元: https://www.koi.ai/blog/trust-wallet-binance-compromised-inside-the-code-that-stole-7m-on-christmas-eve

ソース: koi.ai