[论文解读] Towards Smart Hybrid Fuzzing for Smart Contracts.
CONFUZZIUS 是一种混合模糊测试工具,结合了进化模糊测试与约束求解技术,以提升智能合约的代码覆盖率并检测更深层次的漏洞。通过利用数据依赖性分析生成有状态的交易序列,其在发现漏洞方面优于最先进的符号执行工具和模糊测试工具。
Smart contracts are Turing-complete programs that are executed across a blockchain network. Unlike traditional programs, once deployed they cannot be modified. As smart contracts become more popular and carry more value, they become more of an interesting target for attackers. In recent years, smart contracts suffered major exploits, costing millions of dollars, due to programming errors. As a result, a variety of tools for detecting bugs has been proposed. However, majority of these tools often yield many false positives due to over-approximation or poor code coverage due to complex path constraints. Fuzzing or fuzz testing is a popular and effective software testing technique. However, traditional fuzzers tend to be more effective towards finding shallow bugs and less effective in finding bugs that lie deeper in the execution. In this work, we present CONFUZZIUS, a hybrid fuzzer that combines evolutionary fuzzing with constraint solving in order to execute more code and find more bugs in smart contracts. Evolutionary fuzzing is used to exercise shallow parts of a smart contract, while constraint solving is used to generate inputs which satisfy complex conditions that prevent the evolutionary fuzzing from exploring deeper paths. Moreover, we use data dependency analysis to efficiently generate sequences of transactions, that create specific contract states in which bugs may be hidden. We evaluate the effectiveness of our fuzzing strategy, by comparing CONFUZZIUS with state-of-the-art symbolic execution tools and fuzzers. Our evaluation shows that our hybrid fuzzing approach produces significantly better results than state-of-the-art symbolic execution tools and fuzzers.
研究动机与目标
- 为解决现有智能合约测试工具存在的缺陷,这些缺陷源于过度近似或复杂的路径约束,导致误报率高且代码覆盖率低。
- 提升对传统模糊测试工具常遗漏的深层、难以触及的漏洞的检测能力。
- 通过结合进化模糊测试与约束求解,提升代码覆盖率,以探索复杂的执行路径。
- 生成有意义的交易序列,以到达可能存在漏洞的特定合约状态。
- 评估该混合方法在对比最先进的符号执行工具与模糊测试工具时的有效性。
提出的方法
- 使用进化模糊测试通过基于变异的输入生成,探索智能合约中浅层且可到达的路径。
- 采用约束求解技术生成满足复杂路径条件的输入,以探索更深层、更受约束的执行路径。
- 应用数据依赖性分析,识别可引导至特定合约状态的交易序列,从而提高触发隐藏漏洞的可能性。
- 混合方法以协调方式整合进化模糊测试与约束求解,根据代码覆盖率和路径复杂度对路径进行优先排序。
- 该框架设计为兼容以太坊智能合约,并支持符号执行以进行路径条件分析。
- 通过监控执行轨迹与状态转换,评估输入是否触发漏洞。
实验结果
研究问题
- RQ1结合进化模糊测试与约束求解的混合模糊测试工具,是否能在智能合约测试中实现比独立方法更优的代码覆盖率?
- RQ2数据依赖性分析在生成可到达漏洞合约状态的有意义交易序列方面,其有效性如何?
- RQ3与符号执行工具相比,该混合方法在减少误报率并提升对深层复杂漏洞的检测能力方面,其改善程度如何?
- RQ4在漏洞发现率与代码覆盖率方面,CONFUZZIUS 与最先进的模糊测试工具及符号执行工具相比表现如何?
- RQ5约束求解的集成是否能增强对传统进化模糊测试无法探索的路径的探索能力?
主要发现
- CONFUZZIUS 在代码覆盖率和漏洞检测方面显著优于最先进的符号执行工具。
- 该混合方法发现的漏洞数量多于独立的模糊测试工具与符号执行器,尤其在深度嵌套或条件保护的路径中表现更优。
- 约束求解使模糊测试工具能够探索仅靠基于变异的模糊测试无法触及的复杂路径。
- 数据依赖性分析有效生成可到达特定合约状态的交易序列,从而提高触发潜在漏洞的概率。
- 进化模糊测试与约束求解的结合,显著提升了所探索的唯一路径数量与检测到的漏洞数量。
- 评估结果证实,与现有工具相比,CONFUZZIUS 在真实世界智能合约基准测试中取得了更优的性能表现。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。