[论文解读] SolidityCheck : Quickly Detecting Smart Contract Problems Through Regular Expressions
该论文提出 SolidityCheck,一种快速且准确的静态分析工具,通过使用正则表达式和程序插桩技术,检测 Solidity 源代码中的 20 种智能合约漏洞,包括重入攻击和整数溢出等关键问题。该工具通过利用源代码语义和精确的模式匹配,在检测效率和准确率方面优于现有工具。
As a blockchain platform that has developed vigorously in recent years, Ethereum is different from Bitcoin in that it introduces smart contracts into blockchain.Solidity is one of the most mature and widely used smart contract programming language,which is used to write smart contracts and deploy them on blockchain. However, once the data in the blockchain is written, it cannot be modified. Ethereum smart contract is stored in the block chain, which makes the smart contract can no longer repair the code problems such as re-entrancy vulnerabilities or integer overflow problems. Currently, there still lacks of an efficient and effective approach for detecting these problems in Solidity. In this paper, we first classify all the possible problems in Solidity, then propose a smart contract problem detection approach for Solidity, namely SolidityCheck. The approach uses regular expressions to define the characteristics of problematic statements and uses regular matching and program instrumentation to prevent or detect problems. Finally, a large number of experiments is performed to show that SolidityCheck is superior to existing approaches.
研究动机与目标
- 为解决在部署前检测 Solidity 源代码中智能合约漏洞的高效性和准确性工具不足的问题。
- 克服现有工具依赖字节码分析所导致的高层次语义信息丢失和效率低下的局限性。
- 通过为问题代码结构定义精确的基于正则表达式的模式,提升检测准确率,尤其针对重入攻击和整数溢出等高危问题。
- 为开发者提供一种快速、基于源代码感知的工具,实现在早期阶段检测并轻松修改问题代码模式。
- 建立一个全面且最新的智能合约问题分类体系,涵盖安全、性能和可维护性问题。
提出的方法
- 作者将智能合约问题划分为三类:安全、性能和隐藏的编码威胁,识别出 20 种具体的问题类型。
- 设计正则表达式模式,以精确匹配 Solidity 源代码中的问题代码结构,例如不安全的外部调用或未检查的算术运算。
- 该方法结合正则表达式匹配与轻量级程序插桩,以提高检测准确率并减少误报。
- 该工具实现为一个静态分析引擎,处理 Solidity 源文件并以行级粒度报告检测到的问题。
- 通过直接匹配语法模式,避免昂贵的词法和语法分析,显著提升性能。
- 使用大规模真实世界智能合约数据集对工具进行评估,以验证其有效性和效率。
实验结果
研究问题
- RQ1正则表达式能否在 Solidity 源代码中以高精度有效检测广泛范围的智能合约漏洞?
- RQ2基于正则表达式的检测方法在性能上与依赖字节码分析或复杂解析的现有工具相比如何?
- RQ3所提出的检测方法是否能比以往工具更准确地检测到关键漏洞,如重入攻击和整数溢出?
- RQ4程序插桩的使用在不牺牲速度的前提下,能在多大程度上提升检测准确率?
- RQ5所提出的 20 种智能合约问题分类是否全面且适用于真实世界智能合约开发?
主要发现
- SolidityCheck 能够成功检测 20 种不同的智能合约问题类型,包括此前未被充分识别或未被检测到的问题。
- 该工具在检测效率方面优于现有方法,避免了完整词法和语法分析带来的性能开销。
- 它能准确识别高风险漏洞,如重入攻击和整数溢出,这些是合约安全的关键因素。
- 正则表达式的使用实现了快速、可扩展的分析,同时在定位问题代码模式方面保持了高精度。
- 实验表明,与依赖复杂解析树的 SmartCheck 等工具相比,SolidityCheck 显著减少了误报和漏报。
- 该工具在真实世界智能合约数据集上表现出良好的可用性和可扩展性,适合集成到开发工作流中。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。