关键词:
联盟链
Hyperledger Fabric
智能合约
安全漏洞
摘要:
随着区块链技术的发展和普及,越来越多的智能合约应用构建在区块链平台上。由于联盟链代表平台的Hyperledger Fabric在效率和拓展性方面比公有链平台更为突出,因此成为了众多政务、商业等智能合约应用的主要平台。与传统应用程序只在单一节点上运行后得到结果的运行过程不同,智能合约作为分布式应用程序,通常需要在多个节点上同时运行,只有结果一致才承认最终结果,结果不一致则会导致智能合约运行失败,无法向用户提供服务。同时开发者由于缺乏对其底层运行逻辑的了解,在编写业务逻辑时难以理解Fabric智能合约API的正确语义,导致智能合约执行逻辑与实际业务逻辑存在差异,造成大量损失。但目前针对联盟链智能合约安全漏洞的研究和检测工具较少,因此,需要研究针对以Fabric平台为代表的联盟链智能合约安全漏洞检测技术。本文以联盟链中Fabric平台作为研究对象,研究和分析Fabric智能合约可能存在的安全漏洞,针对Fabric平台不同的场景下的漏洞检测需求,设计了动态检测与静态检测相结合的Fabric智能合约安全漏洞检测方案,并实现了对应的原型系统,用于对Fabric智能合约进行自动高效的安全漏洞分析,便于开发者和使用者尽早发现智能合约中的安全漏洞,避免因为漏洞而导致的损失。论文的主要工作如下:1.研究当前Fabric智能合约的安全漏洞,并分析其产生的原因。本文将全局变量误用、外部web服务误用和外部web服务误用等12种Fabric智能合约安全漏洞进行总结和归类,按照内部不一致漏洞、外部不一致漏洞以及Fabric API使用规范漏洞三大类讨论了漏洞产生原因和可能造成的危害。2.提出了基于动静态结合的Fabric智能合约安全漏洞检测方案。为了保证检测结果的全面性,减少漏报情况,同时又能够精准复现漏洞,减少误报情况,本文提出了基于污点分析的静态检测方案以及代码插桩的动态检测方案,并且根据上述三大类漏洞,根据每一个大类确立整体的检测思路,同时再根据每个大类中的具体安全漏洞的产生原因,设计了对应的检测细则。3.基于提出的Fabric智能合约安全漏洞检测方案,设计并实现了一个针对Fabric智能合约安全漏洞的检测系统。介绍了系统中每个模块的设计以及具体实现,并且对传统的静态污点分析方法的实现分别进行了两处工程优化,分别是对标准库进行函数剪枝和对污点分析进行多并发实现,提高了检测效率;对动态分析方法通过构造模拟执行沙箱环境,简化了运行环境前置要求以及提高运行效率。最后还将本系统与开源的检测工具进行了具体的检测结果对比,在支持检测的漏洞种类以及检测漏洞的误报率、漏报率以及准确率方面都有较大的提升。