首页|基于动态污点分析的智能合约模糊测试漏洞检测方法研究

基于动态污点分析的智能合约模糊测试漏洞检测方法研究

李星

基于动态污点分析的智能合约模糊测试漏洞检测方法研究

李星1
扫码查看

作者信息

  • 1. 河南大学
  • 折叠

摘要

智能合约是在区块链上运行的程序,具有去中心化和不可篡改等特性。随着以太坊上部署智能合约数量迅速增多,合约的复杂度也不断增加,因此合约的安全问题越来越受到重视。模糊测试由于其低误报等特性,已经引起了智能合约漏洞检测研究人员的关注。当前模糊测试应用于合约漏洞检测还存在许多问题,影响了模糊测试的漏洞检出率,针对这些问题本文提出了基于动态污点分析的智能合约模糊测试检测方法。 (1)基于动态污点分析的模糊测试漏洞检测模型。基于单测试用例的传统模糊测试方法大量应用于漏洞检测。但由于智能合约特有的全局状态、交易序列的特性,基于单测试用例的检测方法在合约检测时无法较好的提高漏洞检出率。当前基于遗传算法的合约测试方法仍未较好解决这些特性带来的问题。因此本文提出了基于动态污点分析和遗传算法的自适应模糊测试方法。该方法以动态污点分析为中心收集运行时信息作为反馈,着重解决全局变量和交易序列为合约测试带来的问题。实验结果表明,与其他的检测合约漏洞的工具相比,本文的模型具有更高的漏洞检出率。 (2)智能合约模糊测试专家知识生成模型。模糊测试需要专家知识作为漏洞检测的规则。而专家知识依赖于专业人员的归纳,总是滞后于漏洞的发展。虽然也有一些方法利用神经网络分类模型来解决专家知识生成问题,但没有考虑智能合约全局变量带来的问题。模糊测试通过跟踪关键变量的改变检测漏洞,而现有的方法不能较好的获取全局变量的语义改变进而引起误报。为了解决这个问题,本文提出了一个基于交易字节码和全局变量语义的模型。通过构建一个基于动态污点分析的方法来捕获全局变量的语义。根据捕获的全局语义,该模型解决了全局变量给专家知识生成模型带来的误报。并通过实验证明获取全局变量语义的重要性,结果表明本文的模型能够检测到更多的漏洞。 (3)根据上述研究成果,本文设计并实现了基于动态污点分析的智能合约模糊测试系统。该系统可以实现对智能合约漏洞的在线检测。通过对实际合约的测试,模糊测试系统可以较好的对合约中的漏洞进行发现,证明了该方法的实用性。

关键词

区块链/智能合约/模糊测试/漏洞检测/动态污点分析/遗传算法/专家知识生成模型

引用本文复制引用

授予学位

硕士

学科专业

软件工程

导师

赵辉/沈黎明

学位年度

2023

学位授予单位

河南大学

语种

中文

中图分类号

TP
段落导航相关论文