Skip to main content
QUICK REVIEW

[論文レビュー] sCompile: Critical Path Identification and Analysis for Smart Contracts

Jialiang Chang, Bo Gao|arXiv (Cornell University)|Aug 2, 2018
Security and Verification in Computing参考文献 14被引用数 16
ひとこと要約

sCompile は、制御フローグラフの構築と記号実行を用いて、特に資金取引を含む重要な実行パスを特定・順位付けする静的解析ツールである。この手法により手動での点検作業を削減し、高リスクのパスを優先的に処理することで、平均5秒の分析時間で224件の未知の脆弱性を検出しており、ユーザーレビュー前の誤検出率は15.4%である。

ABSTRACT

Ethereum smart contracts are an innovation built on top of the blockchain technology, which provides a platform for automatically executing contracts in an anonymous, distributed, and trusted way. The problem is magnified by the fact that smart contracts, unlike ordinary programs, cannot be patched easily once deployed. It is important for smart contracts to be checked against potential vulnerabilities. In this work, we propose an alternative approach to automatically identify critical program paths (with multiple function calls including inter-contract function calls) in a smart contract, rank the paths according to their criticalness, discard them if they are infeasible or otherwise present them with user friendly warnings for user inspection. We identify paths which involve monetary transaction as critical paths, and prioritize those which potentially violate important properties. For scalability, symbolic execution techniques are only applied to top ranked critical paths. Our approach has been implemented in a tool called sCompile, which has been applied to 36,099 smart contracts. The experiment results show that sCompile is efficient, i.e., 5 seconds on average for one smart contract. Furthermore, we show that many known vulnerabilities can be captured if user inspects as few as 10 program paths generated by sCompile. Lastly, sCompile discovered 224 unknown vulnerabilities with a false positive rate of 15.4% before user inspection.

研究の動機と目的

  • スマートコントラクトの脆弱性を点検するための手作業の負荷を減らすために、重要な実行パスを特定・優先順位付けすること。
  • 記号実行を上位順位のパスに限定することで、スマートコントラクト解析のスケーラビリティを向上させること。
  • 資金取引を含むパスと既知のセキュリティ特性の違反可能性を分析することで、以前に発見されていなかった脆弱性を特定すること。
  • 開発者が高リスク行動を理解しやすいように、実行可能な明確な警告を提供することで、実行可能な行動を促すこと。
  • 静的解析とターゲットを絞った記号実行を組み合わせることで、精度と効率のバランスを取ること。

提案手法

  • すべての可能な実行パスをモデル化するため、コントラクト間関数呼び出しを含む制御フローグラフ(CFG)を構築する。
  • 資金取引の含まれるパスを特定し、事前に定義されたセキュリティ特性の違反が生じる可能性があるパスを優先順位付けする。
  • 特性違反の深刻度とパス長を考慮した、設定可能な式を用いて各パスに「重要度スコア」を割り当てる。
  • 実行可能性の確認と実際の脆弱性の検出のため、上位順位のパスにのみ記号実行を適用する。
  • 実行可能で重要度の高いパスを、明確な警告とともにユーザーに提示し、手動での点検を促す。
  • 静的解析を用いて、実行不可能または低優先度のパスを早期に除外することで、スケーラビリティを向上させる。

実験結果

リサーチクエスチョン

  • RQ1静的解析と記号実行を組み合わせたハイブリッド手法は、手動での点検作業を効果的に削減するための実行パスの優先順位付けに有効であるか?
  • RQ2資金取引の関与と特性違反の可能性に基づく重要なパスの順位付けは、実際の脆弱性の検出においてどの程度効果的か?
  • RQ3上位順位のパスに限定して記号実行を実行しても、重要な脆弱性を逃すことはないか?
  • RQ4未知の脆弱性を検出する際、分析効率と誤検出率のトレードオフはどの程度か?
  • RQ5sCompile のパス分析によるヒントがある場合とない場合とで、開発者が脆弱性を特定する能力にどの程度の差が生じるか?

主な発見

  • sCompile は36,099件のスマートコントラクトを分析し、1件あたり平均5秒の分析時間で、高い効率性を示した。
  • 224件の以前に発見されていなかった脆弱性が検出されたことから、強力な発見能力を有することが示された。
  • ユーザーレビュー前の誤検出率は15.4%であり、実用的な用途においては許容できる水準であった。
  • 平均して10件の重要なパスを点検するだけで既知の脆弱性を特定できたことから、優先順位付けの有効性が顕著に示された。
  • ユーザースタディの結果、sCompile は脆弱性検出のスピードと正確性を顕著に向上させたことが判明し、特にパスのヒントが提供された場合に顕著であった。
  • ユーザーからの評価は高く(平均5/7)、sCompile がスマートコントラクトのセキュリティ解析において実用的な価値を有していることが確認された。

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

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

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

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