Cobo セキュリティチーム:WazirX 盗難コイン事件の分析
1 イベント概要
2024年7月18日、インドの暗号通貨取引所WazirXのマルチシグウォレットが2.3億ドル以上の資金を盗まれました。このマルチシグウォレットはSafe{Wallet}スマートコントラクトウォレットです。攻撃者はマルチシグ署名者を誘導して契約アップグレード取引に署名させ、攻撃者はアップグレードされた契約を通じてウォレット内の資産を直接移転し、最終的に約2.3億ドルの資産をすべて引き出しました。
2 攻撃プロセス分析
注:以下の分析はWazirXおよびLiminalの事後報告、オンチェーンデータ、インターネットの公開情報に基づいており、情報が不完全または誤差がある可能性があるため、分析結果に偏りが生じることがあります。分析結果は参考用であり、具体的には当事者の後続調査結果に基づくものとします。
原文リンク:
WazirXブログ : https://wazirx.com/blog/wazirx-cyber-attack-key-insights-and-learnings/
Liminal Custodyブログ : https://www.liminalcustody.com/blog/update-on-wazirx-incident/
2.1 マルチシグウォレットの構成と攻撃プロセス
双方の情報に基づくと、WazirXは資金管理にSafe(旧称Gnosis Safe)を使用し、Liminalを通じて共同管理を行っています。このSafeウォレットは4/6の署名方式を採用しており、5つの秘密鍵はWazirXのメンバーがハードウェアウォレットで管理し、1つの秘密鍵はLiminalがHSMで管理しています。
通常のプロセスでは、WazirXはLiminalプラットフォームのウェブサイトを通じて取引を開始し、転送先アドレスはLiminalプラットフォームが管理するアドレスのホワイトリストに制限されています。WazirXの5人の署名者のうち3人が取引内容に問題がないことを確認した後、ハードウェアウォレットで署名します。Liminalプラットフォームは3つの署名を収集した後、HSMを使用して最後の署名を追加し、取引をオンチェーンにします。オンチェーンの攻撃取引から見ると、攻撃取引には確かに3つの合法的な署名が含まれており、4つ目の署名は取引の発起者(すなわちLiminal)であり、開示されたウォレット管理構造と一致しています。
LiminalとWazirXの双方の報告を組み合わせると、この悪意のあるマルチシグ取引の発起プロセスは以下の通りです:
攻撃者は何らかの未知の手段(0-dayネットワーク攻撃、ソーシャルエンジニアリング攻撃などを含む)を通じてWazirXに署名取引を誘導しました。
WazirXの3名のメンバーは、それぞれブックマークなどを通じてLiminalプラットフォームにログインし、Google認証およびMFA認証を通過した後、署名待ちの取引として2件のGALAと1件のUSDTの転送取引を確認し、ハードウェアウォレットで署名しました。しかし、実際に被害者が署名した内容はトークン転送取引ではなく、マルチシグウォレットの契約アップグレード取引でした。実際の取引内容が主張された転送取引と一致しなかったため、Liminalプラットフォームは3件の取引をそれぞれ拒否しました。
これにより、攻撃者は契約アップグレード取引に対する3名のメンバーの署名を収集し、再度Liminalプラットフォームに悪意のある契約アップグレード取引を提出し、3つの正しい署名を添付しました。
Liminalプラットフォームは署名に問題がないことを確認した後、4人目の署名者として取引を開始し、取引がオンチェーンにされた後、ウォレット契約がアップグレードされ、制御権が攻撃者に移転しました。
WazirXの説明によれば、署名者はハードウェアウォレットで秘密鍵を保管しています。攻撃者もまた、偽の転送取引を通じて3人の署名者の署名を収集しました。したがって、3人のWazirX管理者に秘密鍵の漏洩は存在しないと推測されます。同様に、Liminalにも秘密鍵の漏洩は存在しないと考えられます。そうでなければ、攻撃者はLiminalプラットフォームを通じて最後の取引を開始する必要はありません。
一方、WazirXの説明によれば、署名者はブックマークを通じて正しいLiminalプラットフォームにアクセスし、GoogleおよびMFA認証を行いました。Liminalプラットフォームも3件の異常取引のログを記録しているため、WazirXが偽のLiminalプラットフォームのフィッシングページにログインして署名を収集された可能性は排除できます。また、WazirXが開示したデバイスの初期証拠結果に基づいても、WazirXの3名の署名者のデバイスは攻撃を受けていないと考えられます。
以上のことから、考えられる攻撃手段の一つは、攻撃者が中間者攻撃、XSS攻撃、またはその他のゼロデイ攻撃などの手段を通じてWazirXの被害者のブラウザのフロントエンドページをハイジャックし、WazirXの被害者に合法的な取引内容を偽造して表示したことです。攻撃者は3人のWazirXの被害者の署名を収集した後、既存のセッションを通じてLiminalプラットフォームに最終的な契約アップグレード攻撃取引を提出し、Liminalプラットフォームのリスク管理を経て成功裏にオンチェーンにしました。
2.2 攻撃事件が露呈した問題
前述の分析に基づくと、WazirXとLiminalの双方が事件において一定の問題を露呈しています。
Liminalプラットフォームのリスク管理が厳格でない:
最終的なオンチェーンの攻撃取引から見ると、Liminalプラットフォームは契約アップグレード取引に署名し、オンチェーンにしました。プラットフォームのホワイトリスト転送リスク管理戦略は期待通りの効果を発揮していません。
Liminalプラットフォームが開示したログからは、プラットフォームがすでに3件の疑わしい取引を発見し拒否したことがわかりますが、ユーザーに対して第一時間に警告を発するか、ウォレットの転送取引を凍結することはありませんでした。
WazirXがハードウェアウォレットの署名内容を慎重に確認していない:
- ハードウェアウォレットに表示される内容が真の署名待ちの取引内容です。WazirXの署名者は、マルチシグ取引に署名する際、Liminalページに表示された取引を信頼し、ハードウェアウォレットの署名待ち内容とLiminalページに表示された取引が一致しているかを慎重に確認せずに直接署名し、攻撃者が必要とする契約アップグレード取引の署名を提供しました。