Skip to main content
QUICK REVIEW

[論文レビュー] xFuzz: Machine Learning Guided Cross-Contract Fuzzing

Yinxing Xue, Jiaming Ye|arXiv (Cornell University)|Nov 24, 2021
Advanced Malware Detection Techniques参考文献 42被引用数 11
ひとこと要約

xFuzz は、Ethereum スマートコントラクト間の相互作用を分析することで、複数のコントラクトにまたがる脆弱性を検出する機械学習ガイド付きファズャーです。単語ベクトルやバイトコード命令といった学習済みの特徴を用いて、無害な実行パスをフィルタリングし、他のツールに比べて 20% 未満の実行時間で、18 件の利用可能な脆弱性(うち 15 件は以前に発見されていなかった)を検出しています。

ABSTRACT

Smart contract transactions are increasingly interleaved by cross-contract calls. While many tools have been developed to identify a common set of vulnerabilities, the cross-contract vulnerability is overlooked by existing tools. Cross-contract vulnerabilities are exploitable bugs that manifest in the presence of more than two interacting contracts. Existing methods are however limited to analyze a maximum of two contracts at the same time. Detecting cross-contract vulnerabilities is highly non-trivial. With multiple interacting contracts, the search space is much larger than that of a single contract. To address this problem, we present xFuzz, a machine learning guided smart contract fuzzing framework. The machine learning models are trained with novel features (e.g., word vectors and instructions) and are used to filter likely benign program paths. Comparing with existing static tools, machine learning model is proven to be more robust, avoiding directly adopting manually-defined rules in specific tools. We compare xFuzz with three state-of-the-art tools on 7,391 contracts. xFuzz detects 18 exploitable cross-contract vulnerabilities, of which 15 vulnerabilities are exposed for the first time. Furthermore, our approach is shown to be efficient in detecting non-cross-contract vulnerabilities as well -- using less than 20% time as that of other fuzzing tools, xFuzz detects twice as many vulnerabilities.

研究の動機と目的

  • 2 つのスマートコントラクトを超える相互作用に起因する脆弱性を検出できない既存のツールのギャップを埋める。
  • ファズィングにおいて複数の相互作用するコントラクトを分析する際の高い探索空間の複雑さを軽減する。
  • プログラムの特徴に基づいてトレーニングされた機械学習モデルをルールベースのフィルタリングに置き換えることで、検出の正確性と効率を向上させる。
  • Ethereum スマートコントラクトにおけるコントラクト間相互作用のスケーラブルで正確なファジングを可能にする。

提案手法

  • フレームワークは、スマートコントラクト群の間のコントラクト呼び出し関係を静的解析することで、マルチコントラクト実行グラフを構築する。
  • 関数名や変数識別子からの単語ベクトル、EVM バイトコードからの命令レベルの特徴を含むプログラム特徴を抽出する。
  • これらの特徴に基づいてトレーニングされた機械学習モデルにより、実行パスが無害である確率を予測し、ファジング中に利用不可能なパスを pruning する。
  • このモデルは、リスクスコアの高いパスを優先して探索するファジングエンジンに統合されている。
  • 複雑なコントラクト間相互作用を引き起こす入力を生成するために、記号実行と制約ソルブを用いる。
  • 最終的な脆弱性検出は、機械学習モデルが特定した高リスクパスに対する動的解析によって実施される。

実験結果

リサーチクエスチョン

  • RQ1機械学習モデルは、Ethereum スマートコントラクトにおけるコントラクト間実行パスのうち、無害なものと悪意あるものを効果的に区別できるか?
  • RQ2機械学習ガイド付きファジングは、従来のファジングおよび静的解析に比べ、コントラクト間脆弱性の検出においてどの程度優れているか?
  • RQ3機械学習ベースのパスフィルタリングは、脆弱性検出カバレッジを損なわずに、どの程度探索空間を縮小できるか?
  • RQ4このフレームワークは、従来のツールが見逃していた以前に発見されていなかったコントラクト間脆弱性を検出できるか?
  • RQ5xFuzz は、最先端のツールと比較して、コントラクト間および非コントラクト間脆弱性の検出において、どの程度効率的か?

主な発見

  • xFuzz は 7,391 コントラクトにまたがる 18 件の利用可能なコントラクト間脆弱性を検出。そのうち 15 件は以前に発見されていなかった。
  • フレームワークは、3 つの最先端のツールが見逃した実世界のコントラクトにおける脆弱性を特定した。
  • xFuzz は、他のファジングツールに比べて脆弱性検出率を 2 倍にし、実行時間は 20% 未満に抑えた。
  • 機械学習モデルは、ルールベースのフィルタリングに比べて優れたロバスト性を示し、手動のチューニングなしで誤検出を低減した。
  • このシステムは、非コントラクト間脆弱性の検出についても効果的に機能し、主な目的を超えた広範な適用可能性を示した。

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

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

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

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