[論文レビュー] sFuzz: An Efficient Adaptive Fuzzer for Solidity Smart Contracts
sFuzzは、Ethereum Solidityスマートコントラクト向けのAFLベースの適応ファザーで、シードベースの適応探索と軽量な多目的最適化を組み合わせてコードカバレッジと脆弱性検出を向上させ、最先端ツールを速度で最大100倍以上上回り、4,000を超えるコントラクトを扱います。
Smart contracts are Turing-complete programs that execute on the infrastructure of the blockchain, which often manage valuable digital assets. Solidity is one of the most popular programming languages for writing smart contracts on the Ethereum platform. Like traditional programs, smart contracts may contain vulnerabilities. Unlike traditional programs, smart contracts cannot be easily patched once they are deployed. It is thus important that smart contracts are tested thoroughly before deployment. In this work, we present an adaptive fuzzer for smart contracts on the Ethereum platform called sFuzz. Compared to existing Solidity fuzzers, sFuzz combines the strategy in the AFL fuzzer and an efficient lightweight multi-objective adaptive strategy targeting those hard-to-cover branches. sFuzz has been applied to more than 4 thousand smart contracts and the experimental results show that (1) sFuzz is efficient, e.g., two orders of magnitude faster than state-of-the-art tools; (2) sFuzz is effective in achieving high code coverage and discovering vulnerabilities; and (3) the different fuzzing strategies in sFuzz complement each other.
研究の動機と目的
- Solidityスマートコントラクトをブロックチェーン上の不変性のため、デプロイ前に徹底的なテストを実施することを動機づける。
- スマートコントラクトのコードカバレージ、特に分岐カバレージを最大化する自動テストエンジンを開発する。
- 難関のカバーを回避するための軽量で適応的なマルチオブジェクティブのシード選択戦略を活用する。
- 効率的なファジングベースのテストを提供することで、既存のシンボリック実行ベースのツールを補完する。
- アプローチを数千のコントラクトに適用し、パフォーマンス向上を評価してスケーラビリティを Demonstrateする。
提案手法
- コアフレームワークとしてAFLに着想を得たフィードバック指向ファジングを採用し、直前に欠落したブランチを対象とする適応的なシード選択戦略を統合する。
- 未開拓のブランチへの近接度に焦点を当ててシード選択を導く、軽量な多目的距離ベースの適合度を定義する。
- テストケースをビットベクターでエンコードされた設定と関数呼び出し系列として表現し、遺伝子操作に基づくクロスオーバーと突然変異を可能にする。
- 距離測定distance(t, br_n)を各just-missed branch br_nに対して計算し、シードtがそのブランチをカバーする近さを定量化する。効率を維持するため、just-missedブランチに対してのみ距離を簡略化する。
- AFLからのクロスオーバーと突然変異戦略を採用し、契約固有の突然変異と妥当性チェックを行ってテストケースの構文・意味的一貫性を保証する。
- Gasless Send、Exception Disorder、Timestamp/Block/DelegateCallの脆弱性、リ・エントラント、整数オーバーフロー/アンダーフロー、Etherの凍結といった脆弱性検出を推進するオンザフライCFG構築とオラクルフレームワークを実装する。
実験結果
リサーチクエスチョン
- RQ1Adaptive fuzzingは既存のファジングツールと比較してSolidityスマートコントラクトの分岐カバレージと脆弱性検出をどの程度改善できるか。
- RQ2Ethereum仮想マシンの制約内で、Hard-to-coverブランチを最も効果的にナビゲートするシード選択戦略は何か。
- RQ3AFLベースのファジング手法を、効率のための軽量なコントラクト固有の目的と共に効果的に拡張できるか。
- RQ4ファジングベースの手法は、スマートコントラクトの脆弱性を明らかにする際、シンボリック実行ベースのツールをどの程度補完するか。
主な発見
- sFuzzは、平均してContractFuzzerよりも2桁以上の速度で高速である。
- sFuzzはより高いコードカバレージを達成し、競合ツールより多くの脆弱性を発見する。
- 適応的なシード選択戦略は、長時間のファジング実行においてコードカバレージを向上させる。
- sFuzzの異なるファジング戦略は実際には相互補完的である。
- sFuzzは4,000以上のスマートコントラクトに適用され、スケーラビリティと有効性を示している。
- このフレームワークは公開されており、複数の企業に採用されている。
より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。