论文部分内容阅读
区块链作为一种新兴的技术受到了越来越多的关注,已经成为一种在节点互不信任的分布式网络中实现权限管理和数据一致性的有效技术架构,广泛的应用在金融、物联网等领域。区块链技术应用的同时也衍生出了大量的安全问题,由于应用领域的特殊性,安全问题的爆发往往会带来不可估量的经济损失。因此,如何高效准确的检测区块链平台和应用的安全性是一个很值得研究的课题。围绕区块链技术的应用生态正变得越来越庞大,在可预见的将来,构建于区块链之上的应用将会爆发式增长。基于人工的安全检测方法无法充分满足区块链生态圈的安全检测需求,因此,人们对自动化检测方案的呼声越来越高。区块链系统中的数据流动方式具有规律性,便于分类和提取,从而使得自动化的安全检测方案也能提供不逊于人工检测的准确性。基于以上思考,本文研究并实现了针对区块链基础层和智能合约层的自动化安全检测方法。针对区块链基础层,本文以Eos区块链平台为研究对象,提出了一种基于模糊测试的自动化安全检测方法。本文以区块链系统的交易模型和数据处理过程为基础,设计了具有针对性的半随机测试用例构造方法,并通过监测和比对区块链节点在执行测试用例过程中的状态变化情况判断区块链是否存在安全漏洞。针对区块链智能合约层,本文以EVM和WASM为研究对象,提出了利用符号执行技术对智能合约字节码进行自动化安全检测的方法。本文针对智能合约字节码开发了完整的符号执行虚拟机,并立足于区块链机制和字节码特点优化了符号执行流程,提高了有效分支的覆盖度,减少了符号执行时间。同时,本文设计并实现了通过求解符号表达式自动判断是否有漏洞的方法和利用符号描述模拟内存分配和数据存储,从而跟踪智能合约执行过程中的数据变化并自动判定是否存在安全漏洞的方法。最后,从测试结果来看,本文提出的自动化安全检测方法可以在少量或不依赖人为干预的条件下准确的检测出区块链所存在的安全漏洞。此成果为区块链系统安全检测提供极大的助益,这在目前区块链安全工具有效性不强的情况下无疑具有重要的意义。