重新思考智能合约模糊测试:基于调用排序与重要分支重访的模糊测试
密码学与安全
2023-01-13 v2 编程语言
软件工程
摘要
区块链智能合约催生了各种有趣且引人注目的应用,并已成为互联网的一股革命性力量。不少从业者致力于开发检测智能合约漏洞的工具。一类工作围绕静态分析技术展开,但其深受高误报率之苦。另一类工作集中于模糊测试(fuzzing)技术。遗憾的是,当前面向智能合约的模糊测试方法往往从合约初始状态开始进行测试,将过多精力耗费在初始状态周围,因而通常无法发掘由其他状态触发的漏洞。此外,大多数现有方法平等对待每个分支,未能关照那些罕见或更可能存在漏洞的分支,这可能导致资源浪费在正常分支上。本文试图从三个方面应对这些挑战:(1)在生成函数调用序列时,我们显式考虑函数间的数据依赖以助于探索更丰富的状态。我们进一步通过将新序列 S2 附加到函数调用序列 S1 后来延长 S1,使得 S2 能从不同于初始状态的状态开始模糊测试。(2)我们引入基于分支距离的度量,迭代演化测试用例以逼近目标分支。(3)我们采用分支搜索算法发现罕见且脆弱的分支,并设计能量分配机制以关照对这些关键分支的执行。我们实现了 IR-Fuzz,并在超过 12K 的真实合约上进行了广泛评估。实证结果表明:(i)IR-Fuzz 的分支覆盖率比最先进的模糊测试方法高 28%;(ii)IR-Fuzz 检测出更多漏洞,并将漏洞检测的平均准确率较现有方法提升 7%。
引用
@article{arxiv.2301.03943,
title = {Rethinking Smart Contract Fuzzing: Fuzzing With Invocation Ordering and Important Branch Revisiting},
author = {Zhenguang Liu and Peng Qian and Jiaxu Yang and Lingfeng Liu and Xiaojun Xu and Qinming He and Xiaosong Zhang},
journal= {arXiv preprint arXiv:2301.03943},
year = {2023}
}
备注
This paper has been accepted by IEEE Transactions On Information Forensics And Security (TIFS 2022)