Skip to main content
QUICK REVIEW

[論文レビュー] Hunting for Re-Entrancy Attacks in Ethereum Smart Contracts via Static Analysis

Yuichiro Chinen, Naoto Yanai|arXiv (Cornell University)|Jul 2, 2020
Blockchain Technology Applications and Security参考文献 26被引用数 4
ひとこと要約

本稿では、EVMバイトコード上で記号実行とSMTソルブを用いて、イーサリアムスマートコントラクトにおける再入力脆弱性を検出する静的解析ツールRAを提示する。本手法は、誤検出や見逃しのない正確な脆弱性特定を実現し、攻撃パターンの事前知識を必要とせず、実行時の取引を伴わず、デプロイ済みコントラクトのバイトコードのみを対象として動作する。

ABSTRACT

Ethereum smart contracts are programs that are deployed and executed in a consensus-based blockchain managed by a peer-to-peer network. Several re-entrancy attacks that aim to steal Ether, the cryptocurrency used in Ethereum, stored in deployed smart contracts have been found in the recent years. A countermeasure to such attacks is based on dynamic analysis that executes the smart contracts themselves, but it requires the spending of Ether and knowledge of attack patterns for analysis in advance. In this paper, we present a static analysis tool named extit{RA (Re-entrancy Analyzer)}, a combination of symbolic execution and equivalence checking by a satisfiability modulo theories solver to analyze smart contract vulnerabilities to re-entrancy attacks. In contrast to existing tools, RA supports analysis of inter-contract behaviors by using only the Etherum Virtual Machine bytecodes of target smart contracts, i.e., even without prior knowledge of attack patterns and without spending Ether. Furthermore, RA can verify existence of vulnerabilities to re-entrancy attacks without execution of smart contracts and it does not provide false positives and false negatives. We also present an implementation of RA to evaluate its performance in analyzing the vulnerability of deployed smart contracts to re-entrancy attacks and show that RA can precisely determine which smart contracts are vulnerable.

研究の動機と目的

  • ソースコードや実行を必要とせず、デプロイ済みイーサリアムスマートコントラクトに対する安全で正確な解析のための重要なニーズに対応すること。
  • イーサリアムの取引消費を要する動的解析の限界を克服し、攻撃パターンの事前知識を必要としないこと。
  • 形式的検証技術を用いて、再入力脆弱性検出における誤検出や見逃しを排除すること。
  • 公開済みおよび非公開コントラクトに対応するため、唯一EVMバイトコードに基づくコントラクト間静的解析を可能にすること。
  • 実世界のスマートコントラクトにおける最新の再入力攻撃を、スケーラブルで正確かつ自動化されたソリューションとして特定すること。

提案手法

  • RAは、再入力挙動を複数コントラクトにわたって模倣するために、記号実行を用いてコントラクト間制御フローグラフ(CFG)を構築する。
  • 外部コントラクト呼び出しを記号的にモデル化し、解析中に状態遷移と潜在的な再入ポイントを保持する。
  • Z3 SMTソルブを用いて、制御フローと状態変更から導出された制約の充足可能性をチェックすることで、再入力脆弱性の存在を形式的に検証する。
  • SMTソルブを用いた同値性チェックにより、状態が更新される前に対象コントラクトが再び呼び出されるかどうかを分析することで脆弱性検出を実施する。
  • 本手法はEVMバイトコードのみを対象としており、ソースコードが入手不可なコントラクトの解析を可能にする。
  • RAは記号実行とSMTベースの同値性チェックを組み合わせることで、脆弱性検出における妥当性と完全性を保証する。

実験結果

リサーチクエスチョン

  • RQ1EVMバイトコードのみを用いて、誤検出や見逃しのない再入力脆弱性検出が可能か?
  • RQ2攻撃パターンの事前知識がなくとも、既存のツールが回避する高度な再入力攻撃を静的解析ツールが検出可能か?
  • RQ3EVMバイトコード上で記号実行とSMTソルブを用いて、スマートコントラクトの正確なコントラクト間解析が可能か?
  • RQ4提案手法は、デプロイ済みコントラクトにおける実世界の再入力脆弱性をどれほど正確に特定できるか?
  • RQ5複雑な、多数対多数のコントラクト相互作用シナリオにおける脆弱性検出に、本ツールはスケーラブルに適応可能か?

主な発見

  • RAは、実世界のイーサリアムスマートコントラクトにおける再入力脆弱性を100%の正確性で検出でき、誤検出や見逃しは一切報告されていない。
  • 従来の記号実行ツールが回避する複雑なコントラクト間呼び出しパターンに依存するコントラクトに対しても、RAは正確に脆弱なコントラクトを特定できる。
  • RAの解析はEVMバイトコードに完全に依存しており、公開ソースコードのないコントラクトの脆弱性検出を可能にする。
  • 記号実行とZ3 SMTソルブの統合により、取引の実行を伴わず、再入力欠陥の存在を形式的に検証できる。
  • デプロイ済みコントラクトに対する評価から、RAは脆弱なコントラクトと非脆弱なコントラクトを正確に区別できることを確認した。
  • RAの設計は拡張可能であり、ブロックタイムスタンプを用いた時間依存攻撃など、他の脆弱性の検出にも応用可能である。

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

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

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

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