Skip to main content
QUICK REVIEW

[論文レビュー] EVMPatch: Timely and Automated Patching of Ethereum Smart Contracts

Michael Rodler, Wenting Li|arXiv (Cornell University)|Oct 1, 2020
Blockchain Technology Applications and Security参考文献 23被引用数 26
ひとこと要約

EVMPatchは、ソースコードの変更を必要とせず、EthereumスマートコントラクトのEVMバイトコードを再書き換えすることで、アップグレード可能で安全なバージョンに自動的・迅速かつ安全にパッチを当てる、画期的なバイトコードレベルのフレームワークである。14,000件の実世界のコントラクトにおいて整数オーバーフロー/アンダーフローおよびアクセス制御の欠陥を正常にパッチ処理し、機能的正しさを保持するとともに、パッチ適用時間を97.6%削減した。これは本フレームワークが実際の生産環境での利用に適していることを示している。

ABSTRACT

Recent attacks exploiting errors in smart contract code had devastating consequences thereby questioning the benefits of this technology. It is currently highly challenging to fix errors and deploy a patched contract in time. Instant patching is especially important since smart contracts are always online due to the distributed nature of blockchain systems. They also manage considerable amounts of assets, which are at risk and often beyond recovery after an attack. Existing solutions to upgrade smart contracts depend on manual and error-prone processes. This paper presents a framework, called EVMPatch, to instantly and automatically patch faulty smart contracts. EVMPatch features a bytecode rewriting engine for the popular Ethereum blockchain, and transparently/automatically rewrites common off-the-shelf contracts to upgradable contracts. The proof-of-concept implementation of EVMPatch automatically hardens smart contracts that are vulnerable to integer over/underflows and access control errors, but can be easily extended to cover more bug classes. Our extensive evaluation on 14,000 real-world (vulnerable) contracts demonstrate that our approach successfully blocks attack transactions launched on these contracts, while keeping the intended functionality of the contract intact. We perform a study with experienced software developers, showing that EVMPatch is practical, and reduces the time for converting a given Solidity smart contract to an upgradable contract by 97.6 %, while ensuring functional equivalence to the original contract.

研究の動機と目的

  • すでにデプロイ済みの脆弱なEthereumスマートコントラクトに対して、タイムリーかつ自動的にパッチを当てるという重要な課題に対処すること。
  • デプロイ後におけるレガシーコントラクトのアップグレードを手作業で行うという、誤りを犯しやすく、時間がかかるプロセスを排除すること。
  • ソースコードに依存しない、バイトコードレベルのフレームワークを提供し、機能的同等性を保ちながらアップグレード可能にする。
  • 常にオンラインで稼働し、高価値の資産を管理するスマートコントラクトにおけるゼロデイ脆弱性への迅速な対応を可能にすること。
  • 既存の静的解析ツールと統合可能であり、正確な制御フローグラフが得られない状況でも、複雑なコントラクトにスケーラブルに適用できること。

提案手法

  • EVMPatchは、完全で正確な制御フローグラフがなくても、EVMバイトコードにアップグレード可能ロジックを挿入できるトランポリンベースのバイトコード再書き換えエンジンを採用している。
  • デリゲートコール・プロキシパターンを用いて、一般的なオフザシェルスマートコントラクトを自動的にアップグレード可能バージョンに再書き換えし、設計上ストレージレイアウトの互換性を保証している。
  • フレームワークは、整数オーバーフロー/アンダーフローおよびアクセス制御エラーなどの脆弱性を検出する既存の静的解析ツールと統合し、ターゲットドライブのバイトコードパッチを適用する。
  • パッチ適用はEVMバイトコードレベルで実施されるため、任意のハイレベル言語(例:Solidity)と互換性があり、ソースコードに依存しない。
  • 実行時チェックとアップグレードメカニズムを挿入しつつ、元のコントラクトの振る舞いを保持することで、機能的同等性を確保している。
  • 開発者による実地調査により、フレームワークの実用性が確認され、手作業手法と比較してパッチ適用時間が97.6%も短縮されたことが示された。

実験結果

リサーチクエスチョン

  • RQ1デプロイ後における脆弱なEthereumスマートコントラクトを、バイトコードレベルの再書き換えフレームワークが自動的かつ安全にパッチできるか。
  • RQ2EVMPatchは、実世界のコントラクトにおいて、機能的正しさを保ちながらアップグレード可能にする効果はどの程度か。
  • RQ3EVMPatchは、手作業手法と比較して、スマートコントラクトのパッチ適用に要する時間と作業量をどの程度削減できるか。
  • RQ4正確な制御フローグラフが得られない状況でも、EVMPatchは複雑なコントラクト構造に対してどれほど耐性があるか。
  • RQ5EVMPatchは、既存の静的解析ツールと統合可能で、整数オーバーフロー/アンダーフローおよびアクセス制御エラー以外の脆弱性クラスに対しても拡張可能か。

主な発見

  • EVMPatchは、14,000件の実世界の脆弱なEthereumコントラクトを正常にパッチ処理し、意図した機能を損なわず、すべてのテスト攻撃トランザクションをブロックした。
  • 開発者による実地調査で、Solidityコントラクトをアップグレード可能バージョンに変換するのに要する時間が、手作業パッチ適用と比較して97.6%短縮されたことが確認された。
  • EVMPatchは、元のコントラクトと機能的同等性を維持しており、すべてのテスト条件下でパッチ適用済みバージョンが元のコントラクトと同一に振る舞うことを保証している。
  • トランポリンベースのバイトコード再書き換え戦略は、正確な制御フローグラフを必要としないため、SMARTSHIELDのような先行手法よりもスケーラブルで頑健である。
  • EVMPatchは複数の静的解析ツールと統合可能であり、整数オーバーフロー/アンダーフローおよびアクセス制御エラー以外の脆弱性クラスへの拡張も可能である。
  • 開発者フィードバックにより、既存の開発ワークフローへの統合が容易であることが確認され、実世界でのデプロイに実用的であることが示された。

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

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

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

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