数日前、Stargate クロスチェーン ブリッジの基礎となるプロトコルである LayerZero が、デフォルトのトランザクション検証コントラクトを更新しました。Cobo ブロックチェーン セキュリティ チームの分析によると、この更新により、以前のバージョンの重大な抜け穴が修正されました。 LayerZero 上に構築されたすべてのクロスチェーンが発生し、プロジェクトのアセットが影響を受けます。
Stargate Financeこれは、ここ数日で最も注目を集めているクロスチェーンブリッジプロジェクトであり、この記事の発行時点で TVL は 35 億米ドルを超えています。
Stargate クロスチェーン ブリッジの最下層は LayerZero に基づいており、クロスチェーン メッセージングを実現します。 LayerZero のクロスチェーン メッセージングの背後にある基本原則は次のとおりです。
オラクルは、ソースチェーン上のブロックハッシュとブロックreceiptsRootをターゲットチェーンに送信します。
Relayerはソースチェーン上のトランザクションのレシートとレシートとブロックのreceiptsRoot間のパス関係をターゲットチェーンに送信します このとき、ターゲットチェーン上のトランザクション検証コントラクトはイーサリアムMPTの依存関係に基づきます[ 1]. 提出された受領書とオラクルによって提出された受領書ルートとの間の対応関係を確認します。
検証に合格した場合、その領収書は合法的な領収書とみなされ、上位層のプロトコルに転送され、その後のクロスチェーン資産操作がトリガーされます。
LayerZero は、何の発表もなく 3 月 28 日にクロスチェーン使用のための検証契約を更新しました [2]。 Cobo セキュリティ チームは、元の検証コントラクト (MPTValidator) と新しい検証コントラクト (MPTValidatorV2) [3] のコードを比較することにより、このアップデートが以前の重大なセキュリティ脆弱性を修正するものであることを発見しました。
パッチのコアコードは次のとおりです。
元の脆弱性コードは MPT 検証を実行する際に、外部から渡されたポインタを通じて次の層の計算に使用する hashRoot を取得します。ここでは、Solidity の基礎となる add、mload、およびその他のアセンブリ命令を使用して、proofBytes から hashRoot を取得します。proofBytes の長さ内でポインタの長さに制限がないため、攻撃者は範囲外のポインタを渡して、コントラクトは、proofBytes 以外のデータを次の層の hashRoot として読み取ります。このように、hashRoot が偽造される可能性があり、さらに、偽造されたトランザクション レシートが MPT 検証を通過できるという事実につながります。最終的な結果は、Oracle が完全に信頼されているという前提の下で、Relayer が受信データを偽造することで依然としてクロスチェーン プロトコルを一方的に攻撃することができ、LayerZero の以前のセキュリティの前提を破ることになります。
現在の LayerZero プロトコルの Oracle はマルチシグネチャに似た契約であり、3 人の管理者のうち 2 人が同じデータを送信すると、そのデータは有効とみなされます。ただし、中継器は単一署名 EOA によって制御され、どの中継器でも攻撃データを送信してすべての攻撃プロセスを完了できます。
パッチ適用されたコードは、受信パスを使用し、safeGetItemByIndex 関数を使用して MPT の次の層の hashRoot を取得し、hashRoot が現在のproofBytes に存在することを確認して、MPT 検証が正しく続行できるようにします。
今回脆弱性が明らかになったコードは、LayerZero プロトコルの中核となる MPT トランザクション検証部分のコードであり、LayerZero 全体および上位層プロトコル (Stargate など) の正常な動作の基礎となります。 LayerZero プロジェクト チームは現在の明らかな脆弱性を修正しましたが、他の脆弱性が悪用される可能性も排除できません。さらに、LayerZero プロジェクトの主要なコントラクトのほとんどは現在 EOA によって管理されており、マルチ署名メカニズムやタイムロックメカニズムは採用されていません。これらの特権 EOA の秘密鍵が漏洩すると、すべての上位層プロトコルの資産も影響を受ける可能性があります。
ここで、Cobo ブロックチェーン セキュリティ チームは、投資家に新しいプロジェクトのリスクに注意を払うよう警告すると同時に、LayerZero プロジェクト関係者に対し、契約コードの詳細な監査を実施し、現在の EOA 管理の権限をマルチ署名契約やタイムロック契約をできるだけ早く削除し、攻撃の危険を減らします。
Reference:
https://eth.wiki/fundamentals/patricia-tree
https://etherscan.io/tx/0xf4f0495bfed37d4d95b3342ead0962433c7973f240b9b0739faa91e6ccac9d40
https://www.diffchecker.com/RJdDTCx7