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
一句话总结

本文提出了针对以太坊智能合约开发的安全检查清单,按设计、编码和测试阶段组织,帮助开发者在 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.

研究动机与目标

  • 为应对智能合约开发中日益增长的系统性安全保证需求,因为漏洞可能带来高额财务和运营风险。
  • 为开发者提供直观、可操作的检查清单,将安全模式整合进软件开发生命周期(SDLC)。
  • 通过形式化设计、编码、测试和部署阶段的最佳实践,降低被利用的风险。
  • 提供一个可重用、可自定义的工具(以电子表格形式提供),支持项目特定的安全控制适配。
  • 弥合理论安全研究与智能合约开发中实际实现之间的差距。

提出的方法

  • 作者从现有文献和常见漏洞中识别并分类了16项与以太坊和 Solidity 相关的核心安全模式。
  • 他们将检查清单划分为三个阶段:设计(8项最佳实践)、编码(18项最佳实践)和测试/部署(6项最佳实践)。
  • 每个检查清单条目均包含清晰的描述、对相关标准或先前工作的引用,以及一个类别(例如,CEI、MU、GC、OR、REU、TC),用于标识漏洞或关注点的类型。
  • 检查清单以公开可访问的电子表格形式实现(http://tiny.cc/security_checklist),以支持自定义和集成到开发工作流中。
  • 该方法强调实用性和工具支持,侧重于开发者可用性,而非形式化验证或静态分析。
  • 作者通过将检查清单映射到先前研究和行业实践中的真实漏洞与模式,对检查清单进行了验证。

实验结果

研究问题

  • RQ1如何系统性地将安全模式整合进以太坊智能合约的开发生命周期?
  • RQ2可以提取并组织哪些具体、可操作的最佳实践,以提升智能合约在设计、编码和测试阶段的安全性?
  • RQ3如何支持开发者在 DApp 开发的不同阶段一致地应用安全模式?
  • RQ4哪些实用工具可以降低智能合约安全的思维负担和出错率,而无需深入掌握形式化验证专业知识?
  • RQ5如何使安全检查清单在不同智能合约项目中实现可重用、可自定义和可维护?

主要发现

  • 作者成功识别并形式化了16项与以太坊智能合约相关的安全核心模式,涵盖重入攻击、时间戳依赖和错误的访问控制等关键漏洞。
  • 设计阶段检查清单包含8项最佳实践,例如使用接口而非原始地址,以及避免依赖区块时间戳,以防止常见的架构缺陷。
  • 编码阶段检查清单包含18项实践,包括正确使用修饰符、输入验证,以及避免重写内置函数,以减少逻辑和访问控制错误。
  • 测试与部署检查清单包含6项关键实践,例如修复编译器警告、锁定到特定编译器版本,以及使用测试网络,以确保发布可靠且安全。
  • 检查清单以可自定义的电子表格形式提供,使开发者能够根据项目特定需求进行调整,同时保持安全严谨性。
  • 本研究证明,结构化、基于检查清单的方法能显著提升安全保证,使最佳实践在整个 SDLC 中易于获取且可审计。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。