Decoupling Reentrancy Protection from Smart Contract Implementation Logic
本論文は、プロキシ層での双モードセキュリティシステムによる呼び出しの傍受を通じて、読み取り専用バリエーションを含む主要なリエントランシー攻撃に対して 100% のカバレッジを達成するために、リエントランシー保護をスマートコントラクトのロジックから分離する、新しいプロキシベースのフレームワークである Sentinel を紹介する。
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
ブロックチェーンの世界を、誰もが資金の移動方法について独自のルールを書き込める、活気に満ちた高リスクの銀行だと想像してください。これらのルールはスマートコントラクトと呼ばれます。それらは強力ですが、リエントラシーと呼ばれる有名な弱点を持っています。
問題:「二重帳簿」強盗
問題を理解するために、次の手順に従うはずの銀行の窓口係(スマートコントラクト)を想像してください。
- 残高を確認する。
- 現金を支払う。
- その後、残高がゼロになったことを示すために帳簿を更新する。
通常の世界では、これは安全です。しかし、ブロックチェーンの世界では、その「窓口係」は中断されうるロボットです。巧妙な泥棒(攻撃者)は、窓口係に資金の引き出しを依頼します。窓口係が手順3(帳簿の更新)を完了する前に、泥棒のロボットコントラクトが、さらに多くの資金を引き出すために窓口係に再度呼びかけます。
帳簿はまだ更新されていないため、窓口係は泥棒が全額を持っているとまだ考えています。泥棒はこのループを1秒間に数十回繰り返すことができ、窓口係が何かおかしいことに気づく前に銀行の金庫を空っぽにします。これがリエントラニー攻撃です。
旧来の解決策:「立入禁止」の看板
以前、開発者たちはこの問題を解決するために、窓口係の机に「立入禁止」の看板(ロック)を置く試みを行いました。
- 欠陥: これらの看板はしばしば特定の机(特定の関数)に貼り付けられていました。もし泥棒が看板のついていない裏口(別の関数)を見つけると、それでも侵入できてしまいました。
- 限界: 銀行に互いに会話する複数の支店(複数のコントラクト)があった場合、ある支店の看板は、別の支店を駆け回ってシステムを混乱させる泥棒を止めることはできませんでした。
- 盲点: これらの看板は、資金を使わずに残高を確認するなどの正当な「閲覧のみ」のリクエストもブロックし、銀行を遅くして不器用なものにしていました。
新しい解決策:センチネル(スマートな門衛)
この論文の著者、シャシャンク・ジョシとヴォイチェフ・ゴラブは、センチネルと呼ばれる新しいシステムを提案しています。彼らは窓口係の机をパッチするのではなく、銀行の入り口に立つスマートな門衛(プロキシ)を構築します。
以下に、シンプルなアナロジーを用いてセンチネルがどのように機能するかを示します。
1. 門衛は全員を遮断する
誰が銀行に入ろうと、何を行おうと、まずセンチネルの門衛を通らなければなりません。門衛は銀行内の複雑なルールには関心を持たず、セキュリティに焦点を当てます。つまり、銀行の内部ルール(ビジネスロジック)を安全にするために書き直す必要はありません。
2. 2 つの運用モード
門衛は、状況のリスクレベルに応じて、2 つの異なる制服、つまり「モード」を持っています。
最適化モード(単一デスクの警備員):
銀行が小さく、支店が1 つしかない場合、門衛はドアに単純で高速なロックを使用します。安価で迅速です。ドアが施錠されている間に誰かが忍び込もうとすると、即座に追い返されます。これは単純な単一コントラクトの状況に最適です。高セキュリティモード(グローバルセキュリティネットワーク):
銀行が巨大な支店ネットワークの一部である場合、門衛は中央セキュリティハブ(LockRegistry と呼ばれる)に接続します。- 門衛が中央ハブに電話をかけます。「支店A は現在忙しいですか?」
- ハブが「はい」と答えれば、門衛は入りを遮断します。
- これにより、泥棒が異なる支店を駆け回ってシステムを欺くことが防がれます。これは単一の部屋だけでなく、ネットワーク全体でセキュリティを調整します。
3. 「閲覧のみ」の例外
ブロックチェーンの厄介な点として、資金を使わずに単に残高を「見る」ことを望む場合(staticcall と呼ばれる)があります。
- 従来のロックはこれらの閲覧者をブロックし、遅延を引き起こしていました。
- センチネルは、誰かが単に「見ている」かどうかを賢く検知します。もしそうであれば、門衛はドアを施錠せずに窓から覗くことを許可しますが、背後から忍び込まないよう厳重に監視します。
なぜこれが重要なのか
著者たちは、これらの攻撃に対して脆弱であることが知られている70 の異なるスマートコントラクトに対してセンチネルをテストしました。
- 結果: センチネルは、異なるコントラクト間で行われるものや「閲覧のみ」のトリックを含む厄介なものを含め、**100%**の攻撃を阻止しました。
- 比較: 旧来の標準ツール(OpenZeppelin のガードなど)は、攻撃の約73%のみを阻止しました。複雑な、コントラクト間をまたぐ強盗には失敗していました。
- コスト: 「門衛」を動かすには少し余分なエネルギー(ガス)が必要ですが、著者たちは、数百万ドルの窃盗を阻止するための小さな代償だと述べています。
結論
この論文は、スマートコントラクトのセキュリティをそのビジネスロジックから分離する方法を提示しています。コントラクトの前に賢く適応性の高い「門衛」を置くことで、コントラクトの内部ルールがどれだけ複雑であっても、システムのタイミングの隙間を悪用する泥棒を阻止できます。これは、壁のあらゆる穴を埋めようとする試みから、侵入不可能な門を構築することへの転換です。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。