Skip to main content
QUICK REVIEW

[論文レビュー] Security checklists for Ethereum smart contract development: patterns and best practices

Lodovica Marchesi, Michele Marchesi|arXiv (Cornell University)|Aug 9, 2020
Blockchain Technology Applications and Security被引用数 9
ひとこと要約

本論文では、Ethereumスマートコントラクト開発の設計、コーディング、テストの各フェーズに分類されたセキュリティチェックリストを提示する。これらはSolidityで16のセキュリティパターンとベストプラクティスを適用するのを支援することを目的としている。主な貢献は、実用的でカスタマイズ可能なチェックリストフレームワークであり、スマートコントラクトのライフサイクル全体でセキュリティを体系的に検証し、ビジネスに重要なDAppにおける脆弱性を低減する。

ABSTRACT

In recent years Smart Contracts and DApps are becoming increasingly important and widespread thanks to the properties of blockchain technology. In most cases DApps are business critical, and very strict security requirements should be assured. Developing safe and reliable Smart Contracts, however, is not a trivial task. Several researchers have studied the security issues, however none of these provide a simple and intuitive tool to overcome these problems. In this paper we collected a list of security patterns for DApps. Moreover, based on these patterns, we provide the reader with security assessment checklists that can be easily used for the development of SCs. We cover the phases of design, coding, and testing and deployment of the software lifecycle. In this way, we allow developers to easily verify if they applied all the relevant security patterns to their smart contracts. We focus all the analysis on the most popular Ethereum blockchain, and on the Solidity language.

研究の動機と目的

  • 脆弱性の高額な財務的・運用的リスクが増加する中、Ethereumスマートコントラクト開発における体系的なセキュリティ保証の必要性に対応するため。
  • 開発者が直感的で実行可能なチェックリストを提供し、セキュリティパターンをソフトウェア開発ライフサイクル(SDLC)に統合できるようにするため。
  • 設計、コーディング、テスト、デプロイメントの各フェーズでベストプラクティスを形式化することで、攻撃のリスクを低減するため。
  • 再利用可能でカスタマイズ可能なツール(スプレッドシートとして提供)を提供し、プロジェクト固有のセキュリティ制御の適応を支援するため。
  • 理論的なセキュリティ研究とスマートコントラクト開発における実装のギャップを埋めるため。

提案手法

  • 著者は、既存の文献および一般的な脆弱性を基に、EthereumおよびSolidityに該当する16のコアセキュリティパターンを特定・分類する。
  • チェックリストを3フェーズに構造化する:設計(8つのベストプラクティス)、コーディング(18のベストプラクティス)、テスト/デプロイメント(6つのベストプラクティス)。
  • 各チェックリスト項目には明確な説明、関連する基準や先行研究への参照、および脆弱性または懸念事項の種別(例:CEI、MU、GC、OR、REU、TC)を示すカテゴリが含まれる。
  • チェックリストは、公開済みのスプレッドシート(http://tiny.cc/security_checklist)として実装されており、開発ワークフローへのカスタマイズと統合を可能にしている。
  • アプローチは実用性とツール化に重点を置き、形式的検証や静的解析よりも開発者の使いやすさを重視する。
  • 著者は、過去の研究および業界実務からの実際の脆弱性とパターンへのマッピングを通じて、チェックリストの妥当性を検証した。

実験結果

リサーチクエスチョン

  • RQ1Ethereum向けスマートコントラクト開発ライフサイクルに、セキュリティパターンをどのように体系的かつ効果的に統合できるか?
  • RQ2スマートコントラクトの設計、コーディング、テストの各フェーズで、安全性を向上させるために具体的で実行可能なベストプラクティスをどのように抽出・整理できるか?
  • RQ3開発者がDApp開発の異なるフェーズにわたり、一貫してセキュリティパターンを適用できるように、どのように支援できるか?
  • RQ4形式的検証の専門知識がなくても、認知的負荷とエラー率を低減するための実用的ツールは何か?
  • RQ5多様なスマートコントラクトプロジェクトに適用可能な再利用可能でカスタマイズ可能かつ保守可能なセキュリティチェックリストをどのように作成できるか?

主な発見

  • 著者は、Ethereumスマートコントラクトに該当する16のコアセキュリティパターンを成功裏に特定・形式化した。代表的な脆弱性としてリエントラシーやタイムスタンプ依存、不適切なアクセス制御がカバーされている。
  • 設計フェーズのチェックリストには、生のアドレスの代わりにインターフェースの使用や、ブロックタイムスタンプへの依存を避けるなど、8つのベストプラクティスが含まれ、一般的なアーキテクチャ上の欠陥を防ぐ。
  • コーディングフェーズのチェックリストには、修飾子の適切な使用、入力検証、組み込み関数のオーバーライドの回避など、18の実践的措置が含まれ、論理バグやアクセス制御の欠陥を低減する。
  • テストおよびデプロイメントのチェックリストには、コンパイラの警告を解消すること、特定のコンパイラバージョンにロックすること、テストネットの使用など、6つの重要な実務が含まれ、信頼性とセキュリティの高いリリースを保証する。
  • チェックリストはカスタマイズ可能なスプレッドシートとして提供されており、開発者はプロジェクト固有のニーズに合わせてカスタマイズしながらも、セキュリティの厳密さを維持できる。
  • 本研究は、チェックリストベースの体系的かつ構造的なアプローチが、SDLC全体にわたりベストプラクティスを容易にアクセス可能かつ監査可能にすることで、セキュリティの信頼性を著しく向上させることを示している。

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

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

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

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