暗号世界の高リスクゾーン:クロスチェーンブリッジにはどのような一般的な脆弱性があるのか?

lunaray
2022-04-22 16:54:23
コレクション
クロスチェーンブリッジ攻撃の数が明らかに増加しており、盗まれた資金も相当多く、ハッカーはクロスチェーンブリッジという美味しいターゲットに目を付けています。

原題:《クロスチェーンブリッジの脆弱性概要

原著者:lunaray

編纂:ChinaDeFi

ブロックチェーンとオンチェーンプロジェクトの成長に伴い、マルチチェーンプロジェクトへの需要が増加しており、クロスチェーンブリッジのビジネスもそれに応じて増加しています。ビジネスがあるところには、安全性の問題も存在します。クロスチェーンブリッジはユーザーに便利さを提供する一方で、ハッカーにも便利さを提供しています。Poly Networkが攻撃された後、クロスチェーンブリッジの安全性の問題も浮上しました。

クロスチェーンブリッジとは?

ブロックチェーンブリッジ、またはクロスチェーンブリッジは、2つのブロックチェーンを接続し、ユーザーが1つのチェーンから別のチェーンに暗号通貨を送信できるようにします。

クロスチェーンブリッジは、2つの独立したプラットフォーム間のトークン転送、スマートコントラクト、データ交換などの他のフィードバックや指示を通じて、資金のクロスチェーン操作を実現します。

一般的なクロスチェーンブリッジの操作は以下の通りです:

  • ユーザーは資産Aを元のチェーン上のストレージアドレスに送信し、ブリッジ手数料を支払います;
  • 資産Aはスマートコントラクト内でランダムに選ばれた検証者または信頼されたエスクローによってロックされます;
  • 目標チェーン上に同じ数量の資産A1が発行され、資産A1が目標チェーン上のユーザーアドレスに送信されます。

クロスチェーンブリッジの脆弱性

image

クロスチェーンブリッジの一般的な脆弱性

ChainSwap攻撃事件:

2021年7月、クロスチェーン資産ブリッジプロジェクトChainSwapが攻撃を受けました。クロスチェーンブリッジ上の20以上のプロジェクトが攻撃され、約800万ドルの資産が失われ、10以上のプロジェクトが99%暴落しました。

この攻撃は、プロトコルが署名の有効性を厳密にチェックしていなかったために発生しました。攻撃者は自分で生成した署名を使用して取引に署名することができました。

Factoryコントラクト

image

上の図の受信メソッドの主な機能は、ユーザーのクロスチェーン後の資金を目標チェーンのユーザーアドレスに移動させることです。送信チェーンの署名を検証する必要があります。現在、検証待ちの署名の数は1です。

受信メソッドのロジックとecrecoverおよび_decreaseAuthQuotaメソッドは署名を厳密にチェックしていないため、攻撃者は自分で生成した署名を使用しましたが、その後のコントラクトロジックはマッピング値の署名や他の計算を厳密に判断しませんでした。これにより、攻撃者は受信メソッドを成功裏に実行し、自分の署名で資金を転送しました。

Poly Network攻撃事件

2021年8月、クロスチェーン相互運用プロトコルPoly Networkが突然ハッカーに攻撃されました。このプロトコルを使用しているO3 Swapは深刻な損失を被りました。イーサリアム、バイナンススマートチェーン、Polygonの3つのネットワーク上の資産はほぼすべて奪われました。1時間以内にそれぞれ2.5億、2.7億、8500万ドルの暗号資産が盗まれ、総損失は6.1億ドルに達しました。

この攻撃は、リレーチェーンの検証者の公開鍵が置き換えられたことが主な原因です。つまり、攻撃者がクロスチェーンの中間検証者の役割を代わりに果たし、攻撃者自身が制御していました。

プロトコル内部の関係:

  • リレーチェーンの検証者の公開鍵はEthCrossChainDataコントラクトに存在します;
  • EthCrossChainDataコントラクトの所有者はEthCrossChainManagerコントラクトです;
  • EthCrossChainDataコントラクトのputCurEpochConPubKeyBytesメソッドはリレーチェーンの検証者の役割を変更できます。
  • EthCrossChainManagerコントラクト:

image

上の図では、_executeCrossChainTxメソッドは、渡されたパラメータに厳密な制限を設けていないため、攻撃者はtoContractを渡し、メソッドパラメータを攻撃者が制御しました。プロトコルの内部関係により、攻撃者はハッシュ衝突後にputCurEpochConPubKeyBytesメソッドと同じメソッド署名を渡しました。これにより、EthCrossChainDataコントラクトのputCurEpochConPubKeyBytesメソッドを成功裏に呼び出し、リレーチェーンの検証者の公開鍵を直接変更し、制御可能にしました。その後、検証者が悪意のある資金移動に署名し、大量の資金を取得しました。

Multichain (AnySwap)攻撃事件

2022年1月、Multichainは正式にプロトコルのクロスチェーンブリッジに安全リスクが存在することを発表し、一部のトークンがハッカーに攻撃されるリスクがあることを警告し、ユーザーに早急に権限を取り消すよう促しました。

事件の核心的な原因は、プロトコルが呼び出す基盤となるトークンコントラクトがpermitメソッドを実装していなかったが、fallback関数を含んでいたため、permitメソッドを呼び出すコントラクトが正常に動作したことです。

左側はAnyswapV4Routerコントラクト、右側はWETH9コントラクトです。

image

上の図のAnySwapOutUnderlyingWithPermitメソッドでは、最初の3つのパラメータは呼び出し元によって渡されます。つまり、トークンや他のパラメータは攻撃者が制御しています。パラメータが制御可能な場合、攻撃者は攻撃コントラクトを展開して影響を受けたトークンを移転します。コントラクトアドレスは基盤となるトークンパラメータとして設定されます。

核心的な問題は、WETH9にpermitメソッドがないため、WETH9のfallbackメソッドを呼び出して入金操作を行うと、誤った呼び出しが発生しない(取引はロールバックされない)ことです。つまり、ユーザーがプロトコルに権限を与えると、攻撃者はすぐにユーザーの資金を移転します。

Qubit Bridge攻撃事件

2022年1月、Qubit Financeのクロスチェーンブリッジであるイーサリアム - バイナンスがハッカーに攻撃され、8000万ドル以上の損失を被りました。

核心的な問題:depositメソッド内の資金アドレスがaddress(0)の場合、safeTransferFromエラーが発生せず、deposit機能が正常に実行されます。

QBridgeコントラクト

image

上の図では、depositは通常の入金方法です。このメソッド内でIQBridgeHandler(handler).depositを呼び出すと、ユーザーが渡したresourceIDマッピングのtokenAddressアドレスが0アドレスの場合、後続のtokenAddress.safeTransferFrom(depositer, address(this), amount);転送が正常に実行され、メソッドとイベントが正常に動作し、呼び出し元は成功裏に入金できます。

ここで重要なのは、公式のtokenAddressのETH 0アドレスが公式によって作成されたものであることです(公式は入金機能が無視された廃止機能であると声明しています)。

Meter Bridge攻撃分析

2022年2月、Meter.ioのクロスチェーンプロトコルは、ERC20トークンとネイティブガスコインの直接の相互作用を阻止せず、約430万ドルの損失を引き起こしました。

この事件の核心的な問題は、depositメソッドが入金時にWBNBの入金状況を検証せず、攻撃者が判断条件を回避し、入金せずに正常に資金を取得できることです。

Bridgeコントラクト

image

上の図では、depositとdepositETHメソッドはどちらも入金メソッドですが、depositメソッドで入金する際に、その入金がネイティブトークンであるかどうかを検証していません。攻撃者が入金を行う際、WBNBアドレスを渡します。このメソッドはWBNBの入金を検証せず、その後deposthhandler.depositメソッドを呼び出して判断条件を成功裏に回避しました。最終的に、攻撃者はこの脆弱性を利用して大量の資金を取得しました。

Wormhole攻撃分析

2022年2月、イーサリアムとSolanaの2つの重要なブリッジ(Wormhole)がハッカーに攻撃され、3.2億ドル以上の損失を被りました。

この脆弱性の核心的な原因は、verifysignaturesが呼び出すloadinstruction_atメソッドが指示の有効性を検証していなかったため、攻撃者が偽造した検証署名を使用して資金を取得できたことです。

verify_signature.rsインターフェースコントラクト

image

上の図のverifysignaturesメソッドは、クロスチェーン検証プロセスで呼び出される署名メソッドです。verifysignaturesメソッドがloadinstructionatメソッドを呼び出すため、プロトコルが更新された後、loadinstructionatメソッドは廃止されたメソッドです。このメソッドは渡された指示に対して厳密なチェックを行わないため、攻撃者は制御可能な値を渡した後、この署名方式を利用して自分のクロスチェーンリクエストに署名し、大量の資金を獲得しました。

Li.Finance攻撃分析

2022年3月、イーサリアム上の分散型クロスチェーンプロトコルLi.Financeが攻撃を受けました。攻撃者は37回の呼び出しを行い、複数のウォレットで約60万ドルの資産(204 ETH)を獲得しました。

この攻撃の核心的な問題は、渡された外部データに対する厳密な制限がなかったため、攻撃者が自分の制御する呼び出しロジックを渡すことができたことです。

CBridgeFacetコントラクト

image

上の図のswapAndStartBridgeTokensViaCBridgeメソッドでは、渡されたswapDataパラメータに厳密な制限がありません。同じLibSwap.swap呼び出し内で、この値は厳密に制限されていません。したがって、swapメソッド内でswapDataが成功裏にcallメソッドを呼び出して悪意のある操作を実行できます。攻撃者はこの脆弱性を利用して何度も呼び出しを行い、資金を取得しました。

Ronin Network攻撃分析

2022年3月、Axie InfinityのサイドチェーンRoninの検証者ノードとAxie DAOの検証者ノードが破壊され、Roninブリッジから173600 ETHと2550万ドルのUSDCが2回の取引で奪われました。

攻撃の原因:

Sky MavisのRoninチェーンは現在9つの検証者で構成されています。入金イベントまたは出金イベントを識別するには、9つの検証者のうち5つの署名が必要です。攻撃者は4つのSky MavisのRonin検証者と、Axie DAOが運営する第三者検証者を制御していました。(2021年11月から12月にかけて、Axie DAOはSky Mavisにさまざまな取引に署名させることを許可し、イベントが停止した後にホワイトリストのアクセス権を撤回しなかったため、攻撃者はSky Mavisシステムへのアクセス権を取得し、Axie DAO検証者からのガスレスRPCを使用して署名を取得しました。)

まとめと提言

以上のクロスチェーンブリッジ攻撃事件から、昨年から今年にかけていくつかのクロスチェーンブリッジ攻撃が発生したことがわかります。クロスチェーンブリッジ攻撃の数は明らかに増加しており、盗まれた資金も相当なものです。ハッカーはクロスチェーンブリッジという肥えた肉に目を付けています。まとめると、攻撃は主にクロスチェーン前と署名の部分で発生しており、一般的にはコントラクトの脆弱性や公式の不注意による盗難事件が見受けられます。ますます多くのクロスチェーンプロジェクトとプロジェクトコントラクトの安全性に対して、以下の提言を行います:

  • プロジェクトの立ち上げ前にコントラクトの安全監査を完了する
  • コントラクト呼び出しインターフェースはその適合性を厳密にチェックする必要がある
  • バージョン更新時には、関連インターフェースと署名の安全性を再評価する必要がある
  • クロスチェーン署名者に対して厳格な審査を行い、署名が悪意のある者に制御されないようにする必要がある
ChainCatcherは、広大な読者の皆様に対し、ブロックチェーンを理性的に見るよう呼びかけ、リスク意識を向上させ、各種仮想トークンの発行や投機に注意することを提唱します。当サイト内の全てのコンテンツは市場情報や関係者の見解であり、何らかの投資助言として扱われるものではありません。万が一不適切な内容が含まれていた場合は「通報」することができます。私たちは迅速に対処いたします。
チェーンキャッチャー イノベーターとともにWeb3の世界を構築する