ハッカーはどこを突いた? EVMクロスチェーンブリッジの攻撃手法とは

お知らせ
Table of Contents

はじめに

今回は2023年までに起きた(主にEVMエコシステムを中心とした)クロスチェーンブリッジに対する攻撃手法をまとめた論文1を紹介します。
この論文では まず一般的なブリッジのデザインを簡単に説明した後、ブリッジのコンポーネントごとに、どのような脆弱性が過去に攻撃されたかを紹介しています。

一般的なブリッジのデザイン

ブリッジとは、複数の暗号通貨のチェーンの間でトークンの二重支払いが起きないようにしつつ転送を行うシステムを指す用語です。
暗号通貨のチェーンとしてスマートコントラクトの実行プラットフォームであることは共通しているけれど、通貨は別であるようなチェーンが複数存在します。例えば有名な所でいうとPolygonやBinance Smart Chainなどです。これらは基本的には明確な開発主体、マーケティング主体がいる一方で、ノードの運用やバリデータ機能自体は複数社で分散していたり、一定数量のトークンを持っているユーザーのみが参加できたりします。

これらのチェーンは同じEVM(Ethereum Virtual Machine)の規格(または同じくらい表現力の高いコントラクトが記述可能なブロックチェーンの規格)に基づいており、任意の計算を予め決めたコントラクト上で行うことができます。これらのコントラクトとして、カストディアン(Custodian)、イシュア(Debt Issuer)が存在し、さらにコミュニケーター(Communicator)が両者を取り持つチェーン外部のシステムとして存在します。

  • カストディアン
    • ユーザーがブリッジ元チェーンにおいて入金を行う先となるコントラクト
  • イシュア
    • ユーザーがブリッジ先チェーンにおいて出金を行う先となるコントラクト
  • コミュニケーター
    • ユーザーがブリッジ元チェーンで行った入金の情報を元に、ブリッジ先チェーンで出金の許可を与えるシステム

入金

ブリッジへの入金では以下のようにコミュニケーターがブリッジ元チェーンのカストディアンコントラクトを監視し、入金(ロック)があったならばブリッジ先チェーンのイシュアコントラクトから同量のトークンを発行します。
file

出金

ブリッジからの出金では以下のようにコミュニケーターがブリッジ元チェーンのイシュアコントラクトを監視し、バーンがあったならばブリッジ先チェーンのカストディアンコントラクトで同量のトークンをアンロックします。

file

ブリッジの分類

この論文ではブリッジをいくつかの種類に分類しています。大分類としてトラステッドブリッジ(trusted bridge)、アントラステッドブリッジ(untrusted bridge)があります。

トラステッドブリッジ

トラステッドブリッジでは、ブリッジのユーザーがコミュニケーターを信頼する必要があります。トラステッドブリッジはコミュニケーターの形態によってさらに3つに分類されます。

  • コミュニケーターが単一の鍵で管理されている場合
  • コミュニケーターが複数の鍵で管理されている場合
    • この場合、予め決めたコミュニケーターのうちn人中n/2人以上が信頼できることが前提になります。
  • コミュニケーターが正しく振る舞うようにインセンティブ設計されている場合
    • 例えばoptimistic rollupと呼ばれる形式で、「コミュニケーターが正しく振る舞うかどうか」を監視するオブザーバーと呼ばれるn人のユーザーのうち1人でも信頼できれば、コミュニケーターが正しく振る舞うように動機づけられることになります。
    • EVMではないですがBitVM Bridge2とかもこのカテゴリに属します。

アントラステッドブリッジ

アントラステッドブリッジの場合、誰でもコミュニケーターになれます。コミュニケーターがどのようにブリッジ先のチェーンに対して証明を提出するかで以下の3つに分類できます。

  • ステート検証ブリッジ
    • ブリッジ元で誰がどのくらいのトークンを持っているかという状態と、ブリッジに関するトランザクションが含まれているブロックを、ブリッジ先コントラクトに渡してブリッジ先で検証するケース。
  • コンセンサス検証ブリッジ
    • ブリッジ先のコントラクトにおいては、ブリッジ元のチェーンが正常にブロックを生成していると仮定します。ユーザーはブリッジ元のチェーンのSPV証明をブリッジ先のコントラクトに提出します。
  • ゼロ知識コンセンサス検証ブリッジ
    • ブリッジ元のブロックチェーンにおける状態変化を含む計算全体を圧縮し、ブリッジ先のコントラクト内で検証できるようにした上で証明として提出するケース。STARKs3やRISC Zero4といった証明システムを使って実現する。

なぜブリッジは攻撃されやすいのか?

攻撃を受けやすい理由について論文では以下のような理由が推定されています。

  1. 特定のコントラクトに入金残高が集中しやすく、攻撃成功時の報酬が大きい
  2. 2つのオンチェーンコンポーネントと1つのオフチェーンコンポーネントが関係するため、一般的なコントラクトよりも攻撃対象領域が広い
    1. さらに、オフチェーンコンポーネントについては運用という側面が常について回るため、攻撃対象が増える

カストディアンに対する攻撃事例

マークル木証明ライブラリのバグを突いた攻撃

2022年10月にBinance Bridge で起こったハッキング事件では、カストディアンコントラクトの内部で入金証明をする仕組みにバグがありました。これによって「実際には行っていない入金に対して、入金したという証明を作成する」ことが可能になっていました。

このバグは、フォーク元の Cosmos Cross Chain Bridge で導入されており、それがそのままフォーク先のコードベース内で検証無く使われていたことが原因でした。

古いコードが残っていたことによるバグを突いた攻撃

2022年8月にNomad Bridgeで起こったハッキング事件では、管理者がコントラクトをアップデートして新しいコントラクトの関数を導入したのにもかかわらず、古いコントラクトの関数が残り続けていたことが原因で、入力バリデーションが適切に行われませんでした。

脆弱な方式で生成されたコントラクト管理用鍵の権限を奪う攻撃

2022年6月に Wintermuteで起こったハッキング事件は、「コントラクトをアップデートするために使われる鍵」を生成したコードが脆弱であったことが原因でした。コントラクトの元の所有者は、この鍵が脆弱であるということに気づいて、鍵に紐付いたアドレス内に含まれる全ての資産を退避させました。しかしアドレスがコントラクトのアップデート用に紐付いていることには気づかずに放置したため、コントラクトの管理権限を奪われることになりました。

コミュニケーターに対する攻撃事例

コミュニケーターの鍵を盗む攻撃 (1)

2022年6月に Harmony Horizon Bridgeで起こったハッキング事件では、2-of-5のマルチシグで管理されているウォレットにおいて、2つの鍵が盗まれたことによって資産が流出しました。その後Harmony Horizon Bridgeは4-of-5のマルチシグに変更しました。

コミュニケーターの鍵を盗む攻撃 (2)

2022年3月に Axie Infinitie Ronin Bridge がハッキングされ、5-of-9 のマルチシグで管理されているウォレットにおいて資産が流出しました。この事件当時は、Sky Mavisが4つの鍵を持ち、Axie DAOが1つの鍵を持っているような運用体制であり、2箇所から鍵が盗まれただけで資産が流出しました。

コミュニケーターによる不正な投票を行う攻撃

2023年4月に報告された Celerクロスチェーンプロトコルでは、コミュニケーターが独自のブロックチェーンネットワークを使って投票を行い、2/3以上の票によって採決される仕組みになっていましたが、コミュニケーターは回数制限無く投票を行うことが可能でした。この事例では事前に脆弱性報告が行われたため資産流出はありませんでした。

感想その他

発生源として「ブリッジだから起こった脆弱性」みたいなものは少ないと感じました。もちろん全てブリッジの仕組みを使った攻撃ではあるのですが、再発防止策としては、一般的なシステム運用やプログラミングの常識から外れているものは無さそうです。

論文で繰り返し言及されているポイントとして「システムのセキュリティは、全体の中で最も弱い部分のセキュリティに依存する」というものがあります。

例えば、頑強なマルチシグによる資産管理を行っていたとしても、その資産管理を行うコントラクトの管理者がシングルシグであればそこが最も弱いポイントになります。現状完全トラストレスなブリッジが実現できない以上、ブリッジのセキュリティ評価を行う際に見るべきなのは、マルチシグ等に頼らざるを得ない中で最も弱いポイントがどこなのか、そしてマルチシグで済むシステムを必要以上に複雑化していないかということです。

ただ、マルチシグであると説明していても実際には鍵の所有者が分散していなかったハッキング事例があることを考えると、マルチシグであっても人間への信頼が介在するシステムはそれ以外のシステムと明確に分けて考えられるべきものです。

EVM系の乱立しているチェーンはDINO(Decentralized in Name Only; 見かけ上だけの分散化)であることが多く、そもそもチェーン上のネイティブトークンの理論的な価格は価格競争によって下がり続けるといった問題や、PoS派生型コンセンサスアルゴリズムのセキュリティに対する根本的な批判もあります。一方で、たとえ中央集権化していたとしても、参入障壁のない自由競争市場においてスマートコントラクトの一時的な実行プラットフォームや、あるいは少額手数料のサイドチェーンとして少なくとも一時的には価値を提供していると見ることもできます(これらのEVMチェーンのうちいくつかは、少なくとも Etleneum5よりは長命なシステムであると言えます)。
ビットコインにおいても表現力の高いチェーンへのトラストレスなブリッジを行うことは長年の課題とされており2、ブリッジを設計する場合には少なくともこの論文で紹介したような脆弱性を回避できるような仕組みであることが重要になるでしょう。

ここで紹介していない攻撃についてもRekt6のサイトでまとまっているので、興味があれば見てみてください。

参考文献


  1. SoK: A Review of Cross-Chain Bridge Hacks in 2023 https://arxiv.org/html/2501.03423v1 

  2. ついにビットコインのサイドチェーンが実現か?BitVM Bridgeとは何か https://tech.hashport.io/4687/ 

  3. FRIプロトコルを用いたSTARKアルゴリズムの紹介 https://tech.hashport.io/3924/ 

  4. RISC Zero v1系でzk-STARKによるRustプログラムの証明と検証をする https://tech.hashport.io/4954/ 

  5. the centralized smart contract platform https://github.com/fiatjaf/etleneum 

  6. Rekt https://rekt.news 

タイトルとURLをコピーしました