この記事はコミュニティへの寄稿です。著者は CertiK の監査人である Minzhi He 氏です。
この記事の意見は寄稿者/著者のものであり、必ずしもバイナンス アカデミーの見解を反映するものではありません。
まとめ
ブロックチェーン ブリッジは、ブロックチェーン空間内で相互運用性を実現するために重要です。したがって、あなたの安全が最も重要です。最も一般的なブリッジ セキュリティの脆弱性には、弱いオンチェーンおよびオフチェーン検証、ネイティブ トークンの不適切な処理、構成ミスなどがあります。堅牢な検証ロジックを確保するために、考えられるすべての攻撃ベクトルに対してブリッジをテストすることをお勧めします。
導入
ブロックチェーン ブリッジは、2 つのブロックチェーンを接続して相互作用を可能にするプロトコルです。ビットコインを持っているが、イーサリアム ネットワーク上の DeFi アクティビティに参加したい場合は、ブロックチェーン ブリッジを使用すると、ビットコインを売却することなく参加できます。
ブロックチェーン ブリッジは、ブロックチェーン空間内で相互運用性を実現するために重要です。これらはさまざまなオンチェーンおよびオフチェーン検証を介して動作するため、さまざまなセキュリティ脆弱性が存在します。
なぜ橋の安全が重要なのでしょうか?
通常、ブリッジは、ユーザーがあるチェーンから別のチェーンに転送したいトークンを保持します。ブリッジはスマート コントラクトとして実装されることが多く、クロスチェーン転送が蓄積されると大量のトークンを保持するため、ハッカーにとって有利なターゲットとなります。
さらに、ブロックチェーン ブリッジには複数のコンポーネントが含まれているため、攻撃対象領域が大きくなります。このことを念頭に置いて、悪意のある攻撃者は、クロスチェーン アプリケーションが多額の資金を盗むための非常に良いターゲットであると考えています。
CertiKの推計によると、2022年の橋梁攻撃による損失は13億ドル以上で、これは年間損失総額の36%に相当する。
一般的なブリッジのセキュリティ脆弱性
ブリッジのセキュリティを向上させるには、ブリッジの最も一般的な脆弱性を理解し、リリース前にテストすることが重要です。これらの脆弱性は次の 4 つの領域に分類できます。
弱いオンチェーン検証
単純なブリッジ、特に特定の DApps 用に設計されたブリッジの場合、オンチェーン検証は最小限に抑えられます。これらのブリッジは、集中化されたバックエンドに依存してトークンの作成、書き込み、転送などの基本操作を実行しますが、すべての検証はオフチェーンで実行されます。
対照的に、他のタイプのブリッジはスマート コントラクトを使用してメッセージを検証し、オンチェーン検証を実行します。このような場合、ユーザーがオンチェーンに入金すると、スマート コントラクトは署名付きメッセージを生成し、トランザクションで署名を返します。署名は入金の証拠として機能し、他のチェーンでのユーザーの出金リクエストを検証するために使用されます。このプロセスにより、リプレイ攻撃や入金記録の改ざんなど、さまざまな種類のセキュリティ攻撃を防止できる必要があります。
ただし、オンチェーンの検証プロセスに脆弱性がある場合、攻撃者は大きな損害を引き起こす可能性があります。たとえば、ブリッジがマークル ツリーを使用してトランザクション レコードを検証すると、攻撃者は偽造領収書を生成する可能性があります。これは、検証プロセスに脆弱性がある場合、攻撃者が受信検証をバイパスし、アカウント用に新しいトークンを作成できることを意味します。
一部のブリッジは「ラップされたトークン」の概念を実装しています。たとえば、ユーザーが DAI をイーサリアムから BNB チェーンに転送すると、DAI はイーサリアム コントラクトから取得され、同量のラップされた DAI が BNB チェーンで発行されます。
ただし、トランザクションが正しく検証されない場合、攻撃者は悪意のあるコントラクトを実装して、ラップされたトークンをブリッジから間違ったアドレスに送信する可能性があります。
また、攻撃者は、「transferFrom」関数を使用してトークンを転送し、ブリッジ コントラクトから資産を流出させるために、被害者にブリッジ コントラクトを承認させる必要があります。
残念ながら、多くのブリッジが DApps ユーザーからのトークンの無限の承認を要求するため、この状況はさらに悪化します。これはガス料金を下げる一般的な方法ですが、スマート コントラクトがユーザーのウォレットから無制限の数のトークンにアクセスできるようにするため、追加のリスクが生じます。攻撃者は、検証の欠如と過剰な承認を悪用して、他のユーザーから自分自身にトークンを転送する可能性があります。
弱いオフチェーン検証
一部のブリッジ システムでは、オフチェーン バックエンド サーバーが、ブロックチェーンから送信されたメッセージの正当性を検証する上で重要な役割を果たします。今回は、預金取引の検証に焦点を当てます。
オフチェーン検証を備えたブロックチェーン ブリッジは次のように動作します。
ユーザーは DApp と対話して、ソース チェーンのスマート コントラクトにトークンをデポジットします。
次に、DApp は、API 経由で入金トランザクションのハッシュをバックエンド サーバーに送信します。
トランザクション ハッシュは、サーバーによるいくつかの検証を経ます。正当であるとみなされた場合、署名者はメッセージに署名し、API 経由で署名を UI に送り返します。
署名を受信すると、DApp はそれを検証し、ユーザーがターゲット チェーンからトークンを引き出すことを許可します。
バックエンドサーバーは、処理する入金トランザクションが実際に発生したものであり、偽造ではないことを確認する必要があります。このバックエンド サーバーは、ユーザーがターゲット チェーン上でトークンを引き出すことができるかどうかを決定するため、サイバー犯罪者にとって非常に人気のある攻撃ターゲットです。
バックエンド サーバーは、トランザクションが発行したイベントの構造と、イベントを発行したコントラクト アドレスを検証する必要があります。後者が無視された場合、攻撃者は悪意のあるコントラクトを展開して、正規の入金イベントと同じ構造を持つ入金イベントを偽装する可能性があります。
バックエンド サーバーがイベントを発行したアドレスを検証しない場合、それを有効なトランザクションとみなし、メッセージに署名する可能性があります。その後、攻撃者はトランザクション ハッシュをバックエンドに送信し、検証をバイパスしてターゲット チェーンからトークンを削除する可能性があります。
ネイティブトークンの不適切な処理
ブリッジは、ネイティブ トークンとユーティリティ トークンを処理するために異なるアプローチを採用しています。たとえば、イーサリアム ネットワークでは、ネイティブ トークンは ETH であり、ほとんどのユーティリティ トークンは ERC-20 標準に準拠しています。
ユーザーが自分の ETH を別のチェーンに転送しようとする場合、まずそれをブリッジ コントラクトに入金する必要があります。これを実現するには、ユーザーはトランザクションに ETH を添付するだけで、トランザクションの「msg.value」フィールドを読み取ることで ETH の量を取得できます。
ERC-20 トークンの入金は、ETH の入金とは大きく異なります。 ERC-20 トークンをデポジットするには、ユーザーはまずブリッジ コントラクトにトークンの使用を許可する必要があります。承認とトークンがブリッジ コントラクトにデポジットされた後、コントラクトは「burnFrom()」関数を使用してユーザーのトークンを書き込むか、「transferFrom()」関数を使用してユーザーのトークンをコントラクトに転送します。
これを区別する 1 つの方法は、関数自体の中で条件ステートメントを使用することです。もう 1 つの方法は、各シナリオを処理する 2 つの別々の関数を作成することです。 ERC-20 の入金機能を使用して ETH を入金しようとすると、資金が失われる可能性があります。
ERC-20 デポジットリクエストを処理する場合、ユーザーは通常、デポジット関数への入力としてトークンアドレスを提供します。トランザクション中に信頼性の低い外部呼び出しが発生する可能性があるため、これには重大なリスクが伴います。このリスクを最小限に抑えるには、ブリッジでサポートされるトークンのみを含むホワイトリストを実装するのが一般的です。ホワイトリストに登録されたアドレスのみを引数として渡すことができます。プロジェクト チームがすでにトークン アドレスを漏洩しているため、これにより外部呼び出しが防止されます。
ただし、ネイティブ トークンにはアドレスがないため、ブリッジがネイティブ トークンのクロスチェーン転送を処理するときに問題が発生する可能性があります。ゼロ アドレス (0x000...0) はネイティブ トークンを表します。関数にアドレス 0 を渡すと、正しく実装されていたとしてもホワイトリストのチェックがバイパスされる可能性があるため、これは問題となる可能性があります。
ブリッジ コントラクトが「transferFrom」を呼び出してユーザーの資産をコントラクトに転送すると、アドレス 0 には「transferFrom」関数が実装されていないため、アドレス 0 への外部呼び出しは false を返します。ただし、コントラクトが戻り値を適切に処理しない場合でも、トランザクションは発生する可能性があります。これにより、攻撃者がトークンをコントラクトに転送せずにトランザクションを実行する機会が生まれます。
間違った構成
ほとんどのブロックチェーン ブリッジでは、トークンとアドレスのホワイトリストまたはブラックリストへの登録、署名者の割り当てまたは変更、およびその他の重要な構成を担当する担当者が特権的な役割を果たします。一見些細な見落としでも重大な損失につながる可能性があるため、すべての設定が正確であることを確認することが重要です。
実際、攻撃者が設定ミスにより転送ログの検証を回避することに成功した事件がありました。プロジェクト チームはハッキングの数日前にプロトコルのアップデートを実装しましたが、このアップデートには変数の変更が含まれていました。この変数は、信頼できるメッセージのデフォルト値を表すために使用されました。この変更により、すべてのメッセージがテスト済みとして自動的に分類されるようになり、攻撃者が任意のメッセージを送信して検証プロセスを通過できるようになります。
橋の安全性を高めるには
これまで説明した 4 つの最も一般的なブリッジの脆弱性は、相互接続されたブロックチェーン エコシステムでセキュリティを確保する際の課題を示しています。これらの脆弱性のそれぞれに対処するには重要な考慮事項があり、すべてに有効な簡単な解決策はありません。
たとえば、各ブリッジには固有の検証要件があるため、エラーのない検証プロセスを保証するための一般的なガイドラインを提供することは困難です。検証バイパスを防ぐ最も効果的なアプローチは、潜在的な攻撃ベクトルに対してブリッジを徹底的にテストし、検証ロジックが堅牢であることを確認することです。
つまり、潜在的な攻撃に対して厳密にテストし、最も一般的なブリッジ セキュリティの脆弱性に特別な注意を払うことが重要です。
結論
クロスチェーンブリッジはその価値が高いため、長い間攻撃の対象となってきました。開発者は、広範な導入前テストを実施し、第三者による監査に参加することで、橋のセキュリティを強化し、近年橋を悩ませている壊滅的なハッキングが再発するリスクを軽減できます。ブリッジはマルチチェーンの世界にとって重要ですが、効果的な Web3 インフラストラクチャを設計および構築する際には、セキュリティを最優先する必要があります。
参考文献
ブロックチェーンブリッジとは何ですか?
クロスチェーンの相互運用性とは何ですか?
3 つの人気のある暗号ブリッジとその仕組み
ラップされたトークンとは何ですか?
法的通知およびリスク警告: このコンテンツは、一般情報および教育目的のみを目的として「現状のまま」提供されており、いかなる種類の表明や保証もありません。これは、財務上、法律上、またはその他の専門的なアドバイスとして解釈されるべきではなく、特定の製品やサービスの購入を推奨するものでもありません。適切な専門アドバイザーから個別にアドバイスを求める必要があります。この記事は第三者によって寄稿されているため、表明された意見は第三者寄稿者の意見であり、必ずしもバイナンス アカデミーの意見を反映しているわけではないことに注意してください。詳細については、こちらの法的通知全文をお読みください。デジタル資産の価格は変動する可能性があります。投資の価値は上がることもあれば下がることもあり、投資額が戻ってこない場合もあります。投資に関する決定に対して責任を負うのはあなただけです。 Binance Academy は、お客様が被る可能性のある損失に対して責任を負いません。この資料は、財務上、法律上、またはその他の専門的なアドバイスとして解釈されるべきではありません。詳細については、利用規約とリスク警告をご覧ください。



