Skip to main content
QUICK REVIEW

[論文レビュー] HCC: A Language-Independent Hardening Contract Compiler for Smart Contracts

Jens-Rene Giesen, Sébastien Andreina|arXiv (Cornell University)|Mar 1, 2022
Security and Verification in Computing被引用数 7
ひとこと要約

本稿では、制御フローとデータフローをモデル化するCode-Property Graph (CPG) を用いて、ソースコードレベルでセキュリティ強化チェックを自動挿入する、実用的で言語に依存しないスマートコントラクトコンパイラ hcc を提案する。hcc は、10,000件の実世界のSolidityコントラクトにおいて、再入力脆弱性および整数オーバーフロー脆弱性を99.99%の成功率で効果的に防止し、最小限のランタイムオーバーヘッドで、カバレッジと実用性の面で既存のツールを凌駕する。

ABSTRACT

Developing secure smart contracts remains a challenging task. Existing approaches are either impractical or leave the burden to developers for fixing bugs. In this paper, we propose the first practical smart contract compiler, called HCC, which automatically inserts security hardening checks at the source-code level based on a novel and language-independent code property graph (CPG) notation. The high expressiveness of our developed CPG allows us to mitigate all of the most common smart contract vulnerabilities, namely reentrancy, integer bugs, suicidal smart contracts, improper use of tx.origin, untrusted delegate-calls, and unchecked low-level call bugs. Our large-scale evaluation on 10k real-world contracts and several sets of vulnerable contracts from related work demonstrates that HCC is highly practical, outperforms state-of-the-art contract hardening techniques, and effectively prevents all verified attack transactions without hampering functional correctness.

研究の動機と目的

  • 開発者に負担をかけることなく、ソースレベルでスマートコントラクトを強化する実用的で自動化されたツールの不足を解消すること。
  • 手動での修正に依存する既存のソリューションの限界を克服し、誤検出/誤検出の問題を解消し、また現代のブロックチェーンプラットフォームと互換性がない問題を解決すること。
  • 関数間およびコントラクト間の静的解析を可能にするコンパイラを設計し、緩和ポイントを正確に同定し、複数のスマートコントラクト言語およびプラットフォームに拡張可能であることを目指すこと。
  • 高価値および複雑なコントラクトを含む実世界のコントラクトに対して、最小限のパフォーマンスオーバーヘッドで有効性を実証すること。
  • 汎用的で拡張可能なCPGベースの表現を用いて、Ethereum や Hyperledger Fabric などの多様なブロックチェーンシステムとの統合を可能にすること。

提案手法

  • hcc は、スマートコントラクト内の制御フローとデータフローの関係をモデル化するため、Code-Property Graph (CPG) を用いる。これにより、脆弱性の正確な静的解析が可能になる。
  • CPGスキーマは、関数呼び出し、状態変数、コントラクト間のデータ依存関係を含む、スマートコントラクトの意味論を特にモデル化するように設計されている。
  • hcc は CPG をクエリして再入力および整数オーバーフローのパターンを検出し、セキュリティ強化チェックの最適な挿入ポイントを同定する。
  • 再入力を防止するため、フィールドおよびオフセットに依存するロックメカニズムを挿入し、過剰に制限されたロックによる誤検出を回避する。
  • コンパイラはソース・ツー・ソース変換をサポートしており、元の論理を保持しながら、開発者が検査可能で検証可能な防御的チェックを挿入できる。
  • hcc は Ethereum の Solidity 用に実装され、Hyperledger Fabric のサポートへ拡張され、プラットフォーム間での移植性を実証した。

実験結果

リサーチクエスチョン

  • RQ1ソースレベルのスマートコントラクトコンパイラとして、再入力および整数オーバーフロー脆弱性を最小限の開発者負担で自動的かつ効果的に防止できるか?
  • RQ2hcc のCPGベースの解析は、記号実行やバイナリコードの書き換えと比較して、スケーラビリティ、正確性、実用性の面でどのように差をつけるか?
  • RQ3hcc は、実世界の複雑で高価値なスマートコントラクトを、機能を損なわずに対処できる程度にまで対応できるか?
  • RQ4hcc のフィールドおよびオフセットに依存するロック戦略は、従来のツールで使われるグローバルロックメカニズムと比較して、誤検出をどれほど低減できるか?
  • RQ5hcc は、汎用的なコード表現を用いて、複数のブロックチェーンプラットフォームおよびプログラミング言語に効果的に拡張可能か?

主な発見

  • hcc は1分のタイムアウト内で10,000件のコントラクトのうち7,174件(71.74%)を処理できた。これは sGuard が処理した3,286件(32.86%)を大きく上回る。
  • 12時間のタイムアウトでは、sGuard は40件の脆弱なコントラクトのうちたった17件しかコンパイルできなかったが、hcc は40件中36件(全25件のトップバリューERC20コントラクトを含む)をコンパイルした。
  • EEGデータセットにおける、確認済みの再入力攻撃トランザクションすべてに対して、hcc は100%のパッチ効果を示し、健全なトランザクションでは誤検出が一切なかった。
  • hcc は、実際のコントラクトで新たに発見された2件の再入力トランザクション(0x85d2…ea0b および 0x516d…29a9)を防止し、既知のベンチマークを超える検出能力を確認した。
  • hcc が導入した強化処理による平均ランタイムガスオーバーヘッドはたったの11.95%であり、パフォーマンスへの影響が非常に小さいことを示した。
  • hcc のフィールドおよびオフセットに依存するロック戦略は、正当な同時アクセスパターンに対しても誤検出を回避するのに対し、sGuard で使われるグローバルロックメカニズムとは異なり、誤検出を低減している。

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

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

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

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