翻訳タグの質問:《レイヤー 0 の回避: 分離されたセキュリティがセキュリティではない理由》

著者: Krzysztof Urbański、L2BEAT チーム メンバー

編集:ベイビーホエール、フォーサイトニュース

 

L2BEAT は、レイヤ 2 プロトコルに関連するリスクを分析および理解するために、創設以来多大な労力を費やしてきました。私たちは常にユーザーとエコシステムの利益を最優先に行動し、プロジェクトや関連チームに対する個人的な好みが事実に影響を与えることなく、公平で独立した監督者となるよう最善を尽くします。そのため、プロジェクト チームがプロジェクトに費やす時間と労力を尊重しつつも、特定のプロトコルの潜在的なリスクについて「警鐘を鳴らした」り懸念を指摘したりすることがあります。セキュリティ関連の議論を早期に行うことで、エコシステム全体が潜在的なリスクに対してより適切に備えることができ、不審な動作に対して早期に対応できるようになります。

今日は、クロスチェーン アプリケーションの共有セキュリティ モデルについて説明したいと思います。現在、共有セキュリティと独立したアプリケーション セキュリティの 2 つのセキュリティ モデルがあります。共有セキュリティはすべてのロールアップと同様です。スタンドアロン アプリケーションのセキュリティは、主に LayerZero を使用する「オムニチェーン」プロジェクトで主に使用されます。

 

共有セキュリティと独立セキュリティ

 

共有セキュリティとは、特定のインフラストラクチャ上で実行される特定のトークンまたはアプリケーションを指し、セキュリティ モデルを自由に選択するのではなく、インフラストラクチャによって課されるセキュリティ要件に従う必要があります。たとえば、オプティミスティック ロールアップでは通常、7 日間の最終期間が課されます。そのようなロールアップで実行されているアプリケーションは、この期間を単純に無視したり短縮したりすることはできません。これは障害のように見えるかもしれませんが、これには理由があります。この期間は、遵守する必要があるアプリケーションの内部セキュリティ ポリシーに関係なく、アプリケーションはロールアップのセキュリティを強化するだけであり、弱めることはできないというセキュリティ保証をユーザーに提供します。

独立したセキュリティとは、各アプリケーションがそのセキュリティを定義する責任を負い、インフラストラクチャによっていかなる制限も受けないことを意味します。アプリに必要なセキュリティ対策はアプリの開発者が一番よく知っているため、最初はこれが良いアイデアのように思えるかもしれません。しかし同時に、各アプリケーション セキュリティ ポリシーに関連するリスクを評価する責任がエンド ユーザーに移ることになります。さらに、アプリ開発者がセキュリティ ポリシーを自由に選択できる場合、いつでも変更することができます。したがって、アプリケーションごとにリスクを 1 回評価するだけでは十分ではなく、アプリケーションのポリシーが変更されるたびに評価する必要があります。

 

問題点

 

各アプリケーションがセキュリティ ポリシーを自由に定義できる独立したセキュリティ モデルは、重大なセキュリティ問題を引き起こすと私たちは考えています。まず、エンド ユーザーは使用するアプリケーションごとにリスクを確認する必要があるため、リスクが増大します。

スタンドアロン セキュリティは、このモデルを使用するアプリのリスクも増加させます。たとえば、セキュリティ ポリシーの変更に関する追加のリスクが追加されます。攻撃者がアプリのセキュリティ モデルを変更した場合、単純にそれを無効にするだけで済み、その結果資金が不足したり危険にさらされる可能性があります。他の方法で攻撃してください。攻撃を防ぐためにアプリケーション上に追加のセキュリティ層はありません。

さらに、セキュリティ ポリシーはいつでもその場で変更される可能性があるため、アプリケーションをリアルタイムで監視してユーザーにリスクを通知することはほぼ不可能です。

これは、L2BEAT で警告したスマート コントラクトのアップグレード可能性に似ていることがわかりました。私たちは、スマート コントラクトにアップグレード可能メカニズムを備えたロールアップ ブリッジとクロスチェーン ブリッジ、およびそれぞれの場合のアップグレード可能性を管理するための正確なメカニズムについてユーザーに通知します。これはすでに非常に複雑であり、別のセキュリティ モデルを使用すると数が倍増するため、効果的に追跡することがほとんど不可能になります。

これが、スタンドアロンのセキュリティ モデル自体がセキュリティ リスクであると考えている理由であり、このモデルをデフォルトで使用するすべてのアプリケーションは、そうでないことが証明されるまではリスクがあるとみなされるべきであると想定しています。

 

セキュリティ上の脆弱性が存在することを証明する

 

私たちはメインネットで仮説をテストすることにしました。 LayerZero フレームワークは、最も人気のあるスタンドアロンのセキュリティ重視のソリューションの 1 つであるため、実験用に選択されました。安全なオムニチェーン トークンをデプロイし、その後、悪意のあるトークンの引き出しを許可するようにセキュリティ構成を更新しました。トークンのコードは、LayerZero が提供する例に基づいており、実際にデプロイされている他の多くのオムニチェーン トークンやアプリケーションと非常に類似または同一です。

詳細に入る前に、LayerZero セキュリティ モデルがどのようなものかを簡単に見てみましょう。

LayerZero がホワイトペーパーで指摘しているように、その「トラストレスなチェーン間通信」は、プロトコルのセキュリティを確保するために連携して動作する 2 つの独立したアクター (オラクルとリレーラー) に依存しています。

LayerZeroは同社のWebサイトで、その中心コンセプトは「ULN(UltraLightNode)を実行するユーザーアプリケーション、構成可能なオンチェーン端末」であると述べている。 LayerZero のオンチェーン コンポーネントは、オラクルとリレーというチェーン間でメッセージを中継するために 2 つの外部オフチェーン コンポーネントに依存しています。

メッセージ M がチェーン A からチェーン B に送信されるたびに、次の 2 つの操作が発生します。

  • まず、オラクルは、チェーン A でメッセージ M を送信するトランザクションが完了するまで待機し、メッセージ M を含むチェーン A のブロック ヘッダーのハッシュ値 (異なるチェーン/オラクル間の正確な値) などの関連情報をチェーン B に書き込みます。形式は異なる場合があります)。

  • 次に、リレーは「証明」(マークル証明など) をチェーン B に送信し、保存されているブロック ヘッダーにメッセージ M が含まれていることを証明します。

LayerZero は、リレーとオラクルが独立した誠実な参加者であることを前提としています。ただし、LayerZero はホワイトペーパーで、この前提が満たされない場合、たとえばリレーとオラクルが共謀し、その結果「オラクルが提供するブロックヘッダーとリレーが提供するトランザクションプルーフの両方が無効になる」とも述べています。まだ合ってるよ。」

LayerZeroは「LayerZeroの設計により共謀の可能性が排除される」と主張している。しかし実際には、各ユーザー アプリケーションは独自のリレーとオラクルを定義できるため、この記述は正しくありません (以下に示す実験でこれを証明します)。 LayerZero は、これらのコンポーネントが独立しており、共謀できないことを設計上保証していません。これらの保証を提供するかどうかはユーザー アプリケーション次第です。 LayerZero には、アプリを中断することを選択した場合にアプリを停止するメカニズムがありません。

さらに、デフォルトでは、すべてのユーザー アプリケーションがいつでもリレーとオラクルを変更できるため、セキュリティの前提条件が完全に再定義されます。したがって、実験で示すように、特定のアプリケーションのセキュリティを一度だけチェックするだけでは十分ではありません。チェック後いつでも変更される可能性があります。

 

実験計画

 

私たちの実験では、Ethereum と Optimism の両方で実行され、LayerZero を使用して 2 つのチェーン間の通信を行う、単純なオムニチェーン トークン CarpetMoon を作成することにしました。

私たちのトークンは当初、LayerZero によって提供されるデフォルトのセキュリティ モデルを使用し、現在展開されている大規模な (おそらくすべてではない) LayerZero アプリケーションと同一になります。したがって、一般に、LayerZero を使用する他のコインと同じくらい安全です。

まず、トークン コントラクトをイーサリアムとオプティミズムにデプロイします。

https://ethtx.info/mainnet/0xf4d1cdabb6927c363bb30e7e65febad8b9c0f6f76f1984cd74c7f364e3ab7ca9/

https://optimistic.etherscan.io/tx/0xf41389d71fa3942de5225efb067072728c6c6de56c241574187781db7c73d221

次に、LayerZero が両方のチェーンのどのコントラクトに対応するかを認識できるようにルーティングを設定します。

https://ethtx.info/mainnet/0x19d78abb03179969d6404a7bd503148b4ac14d711f503752495339c96a7776e9/

https://optimistic.etherscan.io/tx/0x037b1bad33faa5607bb5835460a1d5caaf3a147dc3a09762ac7703befcdb3c3c

トークンはデプロイされており、LayerZero を使用する他のすべてのオムニチェーン トークンとまったく同じように見えます。デフォルトの構成を使用しており、怪しいものは何もありません。

私たちはイーサリアム上で 10 億の CarpetMoon トークンを「テスト ユーザー」のアリスに提供しました。

https://ethtx.info/mainnet/0x7e2faa8426dacae92830efbf356ca2da760833eca28e652ff9261fc03042b313/

 

現在、Alice は LayerZero を使用してこれらのトークンを Optimism にクロスチェーンします。

イーサリアム上のエスクロー契約でトークンをロックします。

https://ethtx.info/mainnet/0xe4dc3757b86bfda8e7baddc088fb1a599e083ed77034c29e5dd8bd11f1e17771/。

トランザクションを含むメッセージは、LayerZero 経由で Optimism に渡されます。

https://layerzeroscan.com/101/address/0xc6005ccc1de4b300d538903b74848bff881d5dc5/message/111/address/0x201fe0d843b546f2e24d4c8444318d1c71b7nonced10d/。

クロスチェーン トークンは Optimism で鋳造されており、Alice は現在 Optimism で 10 億個の MoonCarpet トークンを所有しています。

https://optimistic.etherscan.io/tx/0x5388ced88cf562acafff82d6798f791b0b38b90ee106df9bf91c0d86306ec302。

すべてが期待どおりに機能し、アリスはトークンをクロスチェーンし、イーサリアムのエスクロー契約に 10 億の MoonCarpet トークンがあり、オプティミズムのアカウントに 10 億の MoonCarpet トークンがあることを確認します。しかし、すべてがうまくいったことを確認するために、彼女はトークンの半分をイーサリアムに戻しました。

 

5 億トークンを燃やした Optimism のトランザクションから始めます。

https://optimistic.etherscan.io/tx/0x118a57106488ad0bae1f3b920b1fd98b187752ad966f3a901fc53cff47f2097f。

トランザクションに関する情報はイーサリアムに渡されます。

https://layerzeroscan.com/111/address/0x201fe0d843b546f2e24d4c8444318d1c71b7d10d/message/101/address/0xc6005ccc1de4b300d538903b74848bff881d5dc5/nonce/1。

予想通り、5 億個の MoonCarpet トークンがエスクロー契約からアリスの住所に返されます。

https://etherscan.io/tx/0x27702e07a65a9c6a7d1917222799ddb13bb3d05159d33bbeff2ca1ed414f6a18。

これまでのところ、すべてが想定どおりに正常に動作しています。アリスは、イーサリアムからオプテ​​ィミズムにトークンをクロスチェーンし、またその逆にトークンをクロスチェーンできることを確認しました。MoonCarpet トークンについて心配する必要はありません。

しかし、仮説には独自の問題があります。たとえば、トークンの背後にあるチームが問題に遭遇し、悪者のボブがアプリの LayerZero 構成にアクセスできるようになります。

このようにして、ボブはオラクルとリレーをデフォルトのコンポーネントから自分が制御するコンポーネントに変更できます。

これは LayerZero を使用するすべてのアプリケーションに提供されるメカニズムであり、LayerZero のアーキテクチャに根ざしていることに注意してください。これはいかなる種類のバックドアでもありませんが、標準のメカニズムです。

そこで、ボブはオラクルを自分の管理下にある EOA に変更します。

https://ethtx.info/mainnet/0x4dc84726da6ca7d750eef3d33710b5f63bf73cbe03746f88dd8375c3f4672f2f/。

リピーターも変更されます。

https://ethtx.info/mainnet/0xc1d7ba5032af2817e95ee943018393622bf54eb87e6ff414136f5f7c48c6d19a/。

今、奇妙なことが起こります。オラクルとリレーはボブの完全な制御下にあるため、ボブはアリスのトークンを盗むことができます。 Optimism に対して何もアクションが取られなかったにもかかわらず (MoonCarpet トークンはアリスのウォレットにまだあった)、ボブはイーサリアム上の MoonCarpet スマート コントラクトを (LayerZero メカニズムを使用して) 説得し、他のチェーン上のトークンを破棄したことを納得させることができました。イーサリアム上の MoonCarpet トークンのトークンを引き出します。

まず、彼は自分が管理するオラクルを使用してイーサリアムのブロック ハッシュを更新します。

https://ethtx.info/0xde2edee2cc7f070120e96c9df90d86696970befcfc221e18c6ac4168bb5b1d92/。

これで、エスクロー契約から残りのトークンを引き出すことができます。

https://ethtx.info/0xda695f374b375d5372efeca37aae4c5a17f114d5a76db1e86edebb0924bcdcc7/。

 

実験結果

 

アリスには、エラーがいつ、なぜ発生したのかさえわかりません。突然、Optimism の MoonCarpet トークンはイーサリアムのトークンによって裏付けられなくなりました。

スマート コントラクトはアップグレードできず、期待どおりに機能します。唯一疑わしいアクティビティはオラクルとリレーの変更ですが、これは LayerZero に組み込まれている通常のメカニズムであるため、アリスにはこの変更が意図的なものであるかどうかさえわかりません。たとえアリスがその変化を知ったとしても、それは手遅れです。攻撃者は彼女が反応する前に資金を枯渇させることができます。

LayerZero にできることは何もありません。これらはすべてそのメカニズムの効率的な実装であり、LayerZero が制御することはできません。理論的には、アプリケーション自体がオラクルやリレーを変更することを防ぐことができますが、私たちの知る限り、デプロイされたアプリケーションでそのような変更が行われた例はありません。

誰かがそれに気づくかどうかをテストするためにこの実験を行いましたが、予想通り誰も気づきませんでした。 LayerZero で構築されたすべてのアプリケーションを効果的に監視して、セキュリティ ポリシーが変更されたかどうかを確認し、変更があった場合にユーザーに警告することは、ほぼ不可能です。

たとえ誰かがオラクルとリレーが変更されてセキュリティリスクが生じたことを時間内に発見できたとしても、手遅れになります。新しいオラクルとリレーは配信するメッセージを自由に選択したり、チェーン間通信を単に無効にしたりできるため、これに関してユーザーができることは一般にあまりありません。私たちの実験では、アリスがアプリケーション構成の変更に気づいたとしても、クロスチェーン トークンではほとんど何もできないことが明確に示されています。新しいオラクルとリレーは元の通信チェーン メッセージでは受け入れられなくなるため、メッセージはイーサリアムに返されません。 。

 

結論は

ご覧のとおり、トークンが LayerZero で構築され、そのメカニズムが意図したとおりに使用されているにもかかわらず、トークンのエスクローから資金を盗むことができました。もちろん、これはアプリケーション (この場合は CarpetMoon トークン) の障害であり、LayerZero 自体の障害ではありませんが、LayerZero 自体がセキュリティの保証を提供していないことが証明されています。

LayerZero がオラクルとリレーラーに関するセキュリティ モデルを説明するとき、アプリケーション所有者 (または秘密キーを持っている人) が不合理なことをしないことを前提としています。しかし、敵対的な環境では、この仮定は正しくありません。さらに、ユーザーはアプリ開発者を信頼できる第三者として信頼する必要があります。

したがって、実際には、LayerZero で構築されたアプリケーションのセキュリティについていかなる仮定も行うことはできません。そうでないことが証明されるまでは、すべてのアプリケーションは危険であると考えるべきです。

実際、すべての話は、L2BEAT Web サイトにすべてのオムニチェーン トークンを含めることを計画しているという PR から始まりました。私たちは、そのリスクを評価する方法を理解するのに苦労していました。リスクを分析する際に、私たちは実験というアイデアを思いつきました。

L2BEAT が稼働すると、潜在的なセキュリティ リスクを警告するために、LayerZero で構築されたすべてのアプリケーションにアラートを設定する必要があります。しかし、特に私たちの分野ではスタンドアロン セキュリティは避けるべきモデルであると考えているため、セキュリティ モデルについてより広範な議論をしたいと考えていました。

LayerZero のような独立したセキュリティ モデルの人気が高まるにつれて、それらを悪用するプロジェクトがますます増え、業界全体に多大な損害を与え、不確実性が増大すると私たちは考えています。