Skip to main content
QUICK REVIEW

[論文レビュー] sGUARD: Towards Fixing Vulnerable Smart Contracts Automatically

Tai D. Nguyen, Long Hoang Pham|arXiv (Cornell University)|Jan 6, 2021
Security and Verification in Computing参考文献 22被引用数 7
ひとこと要約

本論文では、記号実行トレースを分析し、固定で整合的な変換パターンを適用することで、実行時検証を用いて4つの一般的な脆弱性を確実に解消する、sGuardと呼ばれるツールを提案する。この手法により、正しく証明された修正が可能となり、実行時間は平均で14.79%、ガス消費量は0.79%のわずかなオーバーヘッドしか発生しない。5,000件のスマートコントラクトに対して評価された。

ABSTRACT

Smart contracts are distributed, self-enforcing programs executing on top of blockchain networks. They have the potential to revolutionize many industries such as financial institutes and supply chains. However, smart contracts are subject to code-based vulnerabilities, which casts a shadow on its applications. As smart contracts are unpatchable (due to the immutability of blockchain), it is essential that smart contracts are guaranteed to be free of vulnerabilities. Unfortunately, smart contract languages such as Solidity are Turing-complete, which implies that verifying them statically is infeasible. Thus, alternative approaches must be developed to provide the guarantee. In this work, we develop an approach which automatically transforms smart contracts so that they are provably free of 4 common kinds of vulnerabilities. The key idea is to apply runtime verification in an efficient and provably correct manner. Experiment results with 5000 smart contracts show that our approach incurs minor run-time overhead in terms of time (i.e., 14.79%) and gas (i.e., 0.79%).

研究の動機と目的

  • デプロイ後も修正不能なスマートコントラクトが、悪用可能な脆弱性を含むという深刻な問題に対処すること。
  • 決定不能性や誤検出のため、既存の検証・テスト手法が脆弱性の不在を保証できないという限界を克服すること。
  • テストケースのカバレッジではなく、形式的妥当性と完全性の保証に基づいて、正しく証明された修正を保証する自動修復手法を設計すること。
  • ブロックチェーン環境において極めて重要な実行時間およびガス消費量のパフォーマンスオーバーヘッドを最小限に抑えること。
  • チューリング完全な言語(例:Solidity)で記述されたスマートコントラクトに特化した、自己完結的で証明可能な正しさを持つ修復ツールを提供すること。

提案手法

  • 完全な記号実行を伴わずに、すべての可能なプログラムパスを探索できるように、スマートコントラクトから記号実行トレースを収集すること。
  • 収集したトレースに対してカスタム静的解析を実施し、リエントラシティ、整数のオーバーフロー/アンダーフロー、タイムスタンプ依存、DelegateCallの誤用の4つの特定の脆弱性タイプを検出すること。
  • 各脆弱性タイプに対してドメイン特化された、証明可能な正しさを持つ修正パターンを設計・適用し、修正後の意味的整合性を保証すること。
  • Securify や Ethainter などの既存ツールで一般的な誤検出を回避するため、独自に構築したコンテキストに依存するトレースベースの解析エンジンを用いること。
  • 関数の振る舞いを変更せずに、形式的に証明されたランタイムチェックをコードインストルメンテーションにより挿入し、特定の脆弱性を防止すること。
  • サポートされる脆弱性クラスについて、形式的妥当性と完全性の証明を通じて修正の妥当性を検証し、偽陰性やテストケースへの過剰適合がないことを保証すること。

実験結果

リサーチクエスチョン

  • RQ1デプロイ後も修正不能なスマートコントラクトに対して、完全に自動的かつ形式的に正しく修正できる技術を設計できるか?
  • RQ2ランタイム検証をどのように効率的かつ整合的に適用し、顕著なパフォーマンスオーバーヘッドを伴わずに一般的なスマートコントラクト脆弱性を修正できるか?
  • RQ3記号実行トレースをどれだけ正確かつスケーラブルに活用して、スマートコントラクトの脆弱性検出と修復を実現できるか?
  • RQ4テストカバレッジではなく形式的正しさの保証に依存することで、テストセットへの過剰適合を回避できるか?
  • RQ5実世界のスマートコントラクトに安全なランタイムチェックを自動的に挿入した場合、実際の実行時間およびガス消費量への影響はどの程度か?

主な発見

  • sGuardは、分析対象の5,000件のスマートコントラクトのうち1,605件を正常に特定・修復し、実用性の高さを示した。
  • 修正によって引き起こされた平均的なランタイムオーバーヘッドは、実行時間で14.79%、ガス消費量で0.79%であり、パフォーマンスへの影響は最小限であった。
  • 高知名度のコントラクトの一つであるBATトークンコントラクトでは、1件の算術的脆弱性を検出・修復したが、後続の分析で既存のチェックにより悪用不可能であることが判明した。
  • BATコントラクトでは、10件の実際の取引を実行した際のガスオーバーヘッドが18%であったため、実世界のシナリオでも効率的であることが確認された。
  • 10件の高知名度トークン(例:LINK、BNB、CRO)のうち7件が安全であると正しく特定され、変更の必要がなかったことから、精度の高さが裏付けられた。
  • sGuardのカスタム静的解析エンジンは、セマンティクスルールの不完全さや矛盾により誤検出が生じやすい既存ツール(Securify や Ethainter)と比較して、誤検出を大幅に低減した。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。